{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To run this, press \"*Runtime*\" and press \"*Run all*\" on a **free** Tesla T4 Google Colab instance!\n",
    "<div class=\"align-center\">\n",
    "<a href=\"https://unsloth.ai/\"><img src=\"https://github.com/unslothai/unsloth/raw/main/images/unsloth%20new%20logo.png\" width=\"115\"></a>\n",
    "<a href=\"https://discord.gg/unsloth\"><img src=\"https://github.com/unslothai/unsloth/raw/main/images/Discord button.png\" width=\"145\"></a>\n",
    "<a href=\"https://docs.unsloth.ai/\"><img src=\"https://github.com/unslothai/unsloth/blob/main/images/documentation%20green%20button.png?raw=true\" width=\"125\"></a></a> Join Discord if you need help + \u2b50 <i>Star us on <a href=\"https://github.com/unslothai/unsloth\">Github</a> </i> \u2b50\n",
    "</div>\n",
    "\n",
    "To install Unsloth your local device, follow [our guide](https://docs.unsloth.ai/get-started/install-and-update). This notebook is licensed [LGPL-3.0](https://github.com/unslothai/notebooks?tab=LGPL-3.0-1-ov-file#readme).\n",
    "\n",
    "You will learn how to do [data prep](#Data), how to [train](#Train), how to [run the model](#Inference), & [how to save it](#Save)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### News"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "Introducing FP8 precision training for faster RL inference. [Read Blog](https://docs.unsloth.ai/new/fp8-reinforcement-learning).\n",
    "\n",
    "Unsloth's [Docker image](https://hub.docker.com/r/unsloth/unsloth) is here! Start training with no setup & environment issues. [Read our Guide](https://docs.unsloth.ai/new/how-to-train-llms-with-unsloth-and-docker).\n",
    "\n",
    "[gpt-oss RL](https://docs.unsloth.ai/new/gpt-oss-reinforcement-learning) is now supported with the fastest inference & lowest VRAM. Try our [new notebook](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/gpt-oss-(20B)-GRPO.ipynb) which creates kernels!\n",
    "\n",
    "Introducing [Vision](https://docs.unsloth.ai/new/vision-reinforcement-learning-vlm-rl) and [Standby](https://docs.unsloth.ai/basics/memory-efficient-rl) for RL! Train Qwen, Gemma etc. VLMs with GSPO - even faster with less VRAM.\n",
    "\n",
    "Visit our docs for all our [model uploads](https://docs.unsloth.ai/get-started/all-our-models) and [notebooks](https://docs.unsloth.ai/get-started/unsloth-notebooks).\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Installation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": "%%capture\nimport os\nos.environ[\"UNSLOTH_VLLM_STANDBY\"] = \"1\" # [NEW] Extra 30% context lengths!\n!pip install --upgrade -qqq uv\ntry: import numpy, PIL; get_numpy = f\"numpy=={numpy.__version__}\"; get_pil = f\"pillow=={PIL.__version__}\"\nexcept: get_numpy = \"numpy\"; get_pil = \"pillow\"\ntry: import subprocess; is_t4 = \"Tesla T4\" in str(subprocess.check_output([\"nvidia-smi\"]))\nexcept: is_t4 = False\nget_vllm, get_triton = (\"vllm==0.9.2\", \"triton==3.2.0\") if is_t4 else (\"vllm==0.10.2\", \"triton\")\n!uv pip install -qqq --upgrade     unsloth {get_vllm} {get_numpy} {get_pil} torchvision bitsandbytes xformers\n!uv pip install -qqq {get_triton}\n!uv pip install \"huggingface_hub>=0.34.0\" \"datasets==4.3.0\n!uv pip install transformers==4.56.2\n!uv pip install --no-deps trl==0.22.2"
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ZkH_y8UC9lvv"
   },
   "source": [
    "### Unsloth"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "jN75nmdx9lvw"
   },
   "source": [
    "Goal: To convert `Qwen3-8B` into a reasoning model via GRPO by using OpenR1's Math dataset.\n",
    "\n",
    "We first pre fine-tune the model to make GRPO skip trying to match formatting - this speeds GRPO up."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1000,
     "referenced_widgets": [
      "8488c271e1fc4d1aa7c11c617421f684",
      "344191b9becb4e969478373578e340bd",
      "423db717d84d43ab9b864c3a66f8e963",
      "b81a1969d2014c4e8aba8aab24cf2dad",
      "7c2d35b88bf6422db45cc458610f0e0b",
      "e5942ac2602b4754847535ce70036ea1",
      "bab991217e7e45f08c441104ef9be205",
      "4e96eded6ba84c7b97e3293a9c656a50",
      "af8f330d69834981be6ce2034830a588",
      "62644ca4466f4b49be214967370ccfec",
      "51f225c5967848efb9e984659e4fc224",
      "73eef3d9649d41e3bf1a97c78a0358c2",
      "edc1f23bc9bb4c5687b9bf94ee536a78",
      "015e9a81bbd34c0b86e3e51ac92f9aef",
      "d6f7da3e586741f0afc0fadcc2082961",
      "764f9a9831f74f7b8ed522c1f670a042",
      "a5f0142460144a119814b5bcfa125398",
      "8e28c8926a754147accc8b956a920642",
      "ed2e8927760748838edb2838c64e89ee",
      "dbf3c6f1585c4dd59600eeea64e11b98",
      "c84197b1b55a455985029d6800d2b777",
      "b9f450ed827c42268f545b33661f2cc9"
     ]
    },
    "id": "DkIvEkIIkEyB",
    "outputId": "da7440b9-882c-42bc-f12c-0420d983ad71"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\ud83e\udda5 Unsloth: Will patch your computer to enable 2x faster free finetuning.\n",
      "INFO 11-20 11:34:46 [__init__.py:216] Automatically detected platform cuda.\n",
      "\ud83e\udda5 Unsloth Zoo will now patch everything to make training faster!\n",
      "INFO 11-20 11:34:55 [vllm_utils.py:702] Unsloth: Patching vLLM v1 graph capture\n",
      "INFO 11-20 11:34:55 [vllm_utils.py:732] Unsloth: Patching vLLM v0 graph capture\n",
      "==((====))==  Unsloth 2025.11.3: Fast Qwen3 patching. Transformers: 4.56.2. vLLM: 0.10.2.\n",
      "   \\\\   /|    NVIDIA L4. Num GPUs = 1. Max memory: 22.161 GB. Platform: Linux.\n",
      "O^O/ \\_/ \\    Torch: 2.8.0+cu126. CUDA: 8.9. CUDA Toolkit: 12.6. Triton: 3.4.0\n",
      "\\        /    Bfloat16 = TRUE. FA [Xformers = 0.0.32.post1. FA2 = False]\n",
      " \"-____-\"     Free license: http://github.com/unslothai/unsloth\n",
      "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n",
      "Unsloth: vLLM loading unsloth/Qwen3-8B-FP8 with actual GPU utilization = 86.62%\n",
      "Unsloth: Your GPU has CUDA compute capability 8.9 with VRAM = 22.16 GB.\n",
      "Unsloth: Using conservativeness = 1.0. Chunked prefill tokens = 2048. Num Sequences = 224.\n",
      "Unsloth: vLLM's KV Cache can use up to 8.63 GB. Also swap space = 4 GB.\n",
      "Unsloth: Disabling `disable_cascade_attn` in vLLM to allow for better on policy RL!\n",
      "Unsloth: Not an error, but `device` is not supported in vLLM. Skipping.\n",
      "INFO 11-20 11:35:04 [utils.py:328] non-default args: {'dtype': torch.bfloat16, 'seed': 0, 'max_model_len': 2048, 'enable_prefix_caching': True, 'disable_cascade_attn': True, 'gpu_memory_utilization': 0.8661508568217998, 'max_num_batched_tokens': 2048, 'max_num_seqs': 224, 'max_logprobs': 0, 'disable_log_stats': True, 'enable_lora': True, 'max_lora_rank': 32, 'enable_chunked_prefill': True, 'compilation_config': {\"level\":3,\"debug_dump_path\":\"\",\"cache_dir\":\"\",\"backend\":\"inductor\",\"custom_ops\":[],\"splitting_ops\":null,\"use_inductor\":true,\"compile_sizes\":null,\"inductor_compile_config\":{\"epilogue_fusion\":true,\"max_autotune\":false,\"shape_padding\":true,\"trace.enabled\":false,\"triton.cudagraphs\":true,\"debug\":false,\"dce\":true,\"memory_planning\":true,\"coordinate_descent_tuning\":false,\"trace.graph_diagram\":false,\"compile_threads\":12,\"group_fusion\":true,\"disable_progress\":false,\"verbose_progress\":true,\"triton.multi_kernel\":0,\"triton.use_block_ptr\":true,\"triton.enable_persistent_tma_matmul\":true,\"triton.autotune_at_compile_time\":false,\"triton.cooperative_reductions\":false,\"cuda.compile_opt_level\":\"-O2\",\"cuda.enable_cuda_lto\":true,\"combo_kernels\":false,\"benchmark_combo_kernel\":true,\"combo_kernel_foreach_dynamic_shapes\":true,\"enable_auto_functionalized_v2\":false},\"inductor_passes\":{},\"cudagraph_mode\":[2,1],\"use_cudagraph\":true,\"cudagraph_num_of_warmups\":1,\"cudagraph_capture_sizes\":null,\"cudagraph_copy_inputs\":false,\"full_cuda_graph\":false,\"pass_config\":{},\"max_capture_size\":null,\"local_cache_dir\":null}, 'enable_sleep_mode': True, 'model': 'unsloth/Qwen3-8B-FP8'}\n",
      "INFO 11-20 11:35:21 [__init__.py:742] Resolved architecture: Qwen3ForCausalLM\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "`torch_dtype` is deprecated! Use `dtype` instead!\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO 11-20 11:35:21 [__init__.py:1815] Using max model len 2048\n",
      "WARNING 11-20 11:35:21 [_ipex_ops.py:16] Import error msg: No module named 'intel_extension_for_pytorch'\n",
      "INFO 11-20 11:35:23 [scheduler.py:222] Chunked prefill is enabled with max_num_batched_tokens=2048.\n",
      "WARNING 11-20 11:35:23 [lora.py:92] `lora_extra_vocab_size` is deprecated and will be removed in v0.12.0. Additional vocabulary support for LoRA adapters is being phased out.\n",
      "INFO 11-20 11:35:25 [core.py:76] Initializing a V1 LLM engine (v0.10.2) with config: model='unsloth/Qwen3-8B-FP8', speculative_config=None, tokenizer='unsloth/Qwen3-8B-FP8', skip_tokenizer_init=False, tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=False, dtype=torch.bfloat16, max_seq_len=2048, download_dir=None, load_format=auto, tensor_parallel_size=1, pipeline_parallel_size=1, data_parallel_size=1, disable_custom_all_reduce=False, quantization=fp8, enforce_eager=False, kv_cache_dtype=auto, device_config=cuda, decoding_config=DecodingConfig(backend='auto', disable_fallback=False, disable_any_whitespace=False, disable_additional_properties=False, reasoning_backend=''), observability_config=ObservabilityConfig(show_hidden_metrics_for_version=None, otlp_traces_endpoint=None, collect_detailed_traces=None), seed=0, served_model_name=unsloth/Qwen3-8B-FP8, enable_prefix_caching=True, chunked_prefill_enabled=True, use_async_output_proc=True, pooler_config=None, compilation_config={\"level\":3,\"debug_dump_path\":\"\",\"cache_dir\":\"\",\"backend\":\"inductor\",\"custom_ops\":[],\"splitting_ops\":[\"vllm.unified_attention\",\"vllm.unified_attention_with_output\",\"vllm.mamba_mixer2\",\"vllm.mamba_mixer\",\"vllm.short_conv\",\"vllm.linear_attention\",\"vllm.plamo2_mamba_mixer\",\"vllm.gdn_attention\"],\"use_inductor\":true,\"compile_sizes\":[],\"inductor_compile_config\":{\"epilogue_fusion\":true,\"max_autotune\":false,\"shape_padding\":true,\"trace.enabled\":false,\"triton.cudagraphs\":true,\"debug\":false,\"dce\":true,\"memory_planning\":true,\"coordinate_descent_tuning\":false,\"trace.graph_diagram\":false,\"compile_threads\":12,\"group_fusion\":true,\"disable_progress\":false,\"verbose_progress\":true,\"triton.multi_kernel\":0,\"triton.use_block_ptr\":true,\"triton.enable_persistent_tma_matmul\":true,\"triton.autotune_at_compile_time\":false,\"triton.cooperative_reductions\":false,\"cuda.compile_opt_level\":\"-O2\",\"cuda.enable_cuda_lto\":true,\"combo_kernels\":false,\"benchmark_combo_kernel\":true,\"combo_kernel_foreach_dynamic_shapes\":true,\"enable_auto_functionalized_v2\":false},\"inductor_passes\":{},\"cudagraph_mode\":[2,1],\"use_cudagraph\":true,\"cudagraph_num_of_warmups\":1,\"cudagraph_capture_sizes\":[448,440,432,424,416,408,400,392,384,376,368,360,352,344,336,328,320,312,304,296,288,280,272,264,256,248,240,232,224,216,208,200,192,184,176,168,160,152,144,136,128,120,112,104,96,88,80,72,64,56,48,40,32,24,16,8,4,2,1],\"cudagraph_copy_inputs\":false,\"full_cuda_graph\":false,\"pass_config\":{},\"max_capture_size\":448,\"local_cache_dir\":null}\n",
      "INFO 11-20 11:35:25 [parallel_state.py:1165] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, TP rank 0, EP rank 0\n",
      "WARNING 11-20 11:35:25 [topk_topp_sampler.py:69] FlashInfer is not available. Falling back to the PyTorch-native implementation of top-p & top-k sampling. For the best performance, please install FlashInfer.\n",
      "INFO 11-20 11:35:25 [gpu_model_runner.py:2338] Starting to load model unsloth/Qwen3-8B-FP8...\n",
      "INFO 11-20 11:35:26 [gpu_model_runner.py:2370] Loading model from scratch...\n",
      "INFO 11-20 11:35:26 [cuda.py:362] Using Flash Attention backend on V1 engine.\n",
      "INFO 11-20 11:35:27 [weight_utils.py:348] Using model weights format ['*.safetensors']\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "8488c271e1fc4d1aa7c11c617421f684",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Loading safetensors checkpoint shards:   0% Completed | 0/2 [00:00<?, ?it/s]\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO 11-20 11:35:30 [default_loader.py:268] Loading weights took 3.00 seconds\n",
      "INFO 11-20 11:35:30 [punica_selector.py:19] Using PunicaWrapperGPU.\n",
      "INFO 11-20 11:35:31 [gpu_model_runner.py:2392] Model loading took 8.9638 GiB and 4.312551 seconds\n",
      "INFO 11-20 11:35:45 [backends.py:539] Using cache directory: /root/.cache/vllm/torch_compile_cache/dd1b7dc1b2/rank_0_0/backbone for vLLM's torch.compile\n",
      "INFO 11-20 11:35:45 [backends.py:550] Dynamo bytecode transform time: 13.20 s\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 7/7 [00:00<00:00, 192.31it/s, triton_poi_fused_view_6]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO 11-20 11:35:50 [backends.py:194] Cache the graph for dynamic shape for later use\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 370.84it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 735.54it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 685.27it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 750.85it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 686.62it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 678.64it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 688.69it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 711.95it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 731.77it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 693.91it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 715.06it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 712.19it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 669.60it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 729.69it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 697.62it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 722.10it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 679.11it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 772.68it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 673.41it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 745.59it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 712.55it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 735.21it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 690.65it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 747.22it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 743.56it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 702.31it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 690.77it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 726.21it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 742.12it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 698.19it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 674.83it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 610.81it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 651.66it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 709.61it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 11/11 [00:00<00:00, 654.91it/s, triton_poi_fused_view_10]\n",
      "Unsloth: Compiling kernels: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 5/5 [00:00<00:00, 448.52it/s, triton_red_fused__to_copy_add_mean_mul_pow_rsqrt_4]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO 11-20 11:36:34 [backends.py:215] Compiling a graph for dynamic shape takes 47.72 s\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING 11-20 11:36:37 [fp8_utils.py:581] Using default W8A8 Block FP8 kernel config. Performance might be sub-optimal! Config file not found at /usr/local/lib/python3.12/dist-packages/vllm/model_executor/layers/quantization/utils/configs/N=6144,K=4096,device_name=NVIDIA_L4,dtype=fp8_w8a8,block_shape=[128,128].json\n",
      "WARNING 11-20 11:36:37 [fp8_utils.py:581] Using default W8A8 Block FP8 kernel config. Performance might be sub-optimal! Config file not found at /usr/local/lib/python3.12/dist-packages/vllm/model_executor/layers/quantization/utils/configs/N=4096,K=4096,device_name=NVIDIA_L4,dtype=fp8_w8a8,block_shape=[128,128].json\n",
      "WARNING 11-20 11:36:37 [fp8_utils.py:581] Using default W8A8 Block FP8 kernel config. Performance might be sub-optimal! Config file not found at /usr/local/lib/python3.12/dist-packages/vllm/model_executor/layers/quantization/utils/configs/N=24576,K=4096,device_name=NVIDIA_L4,dtype=fp8_w8a8,block_shape=[128,128].json\n",
      "WARNING 11-20 11:36:37 [fp8_utils.py:581] Using default W8A8 Block FP8 kernel config. Performance might be sub-optimal! Config file not found at /usr/local/lib/python3.12/dist-packages/vllm/model_executor/layers/quantization/utils/configs/N=4096,K=12288,device_name=NVIDIA_L4,dtype=fp8_w8a8,block_shape=[128,128].json\n",
      "INFO 11-20 11:36:38 [monitor.py:34] torch.compile takes 60.92 s in total\n",
      "INFO 11-20 11:36:40 [gpu_worker.py:298] Available KV cache memory: 8.98 GiB\n",
      "INFO 11-20 11:36:40 [kv_cache_utils.py:864] GPU KV cache size: 65,376 tokens\n",
      "INFO 11-20 11:36:40 [kv_cache_utils.py:868] Maximum concurrency for 2,048 tokens per request: 31.92x\n",
      "INFO 11-20 11:36:40 [vllm_utils.py:707] Unsloth: Running patched vLLM v1 `capture_model`.\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Capturing CUDA graphs (mixed prefill-decode, PIECEWISE): 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 59/59 [00:13<00:00,  4.40it/s]\n",
      "Capturing CUDA graphs (decode, FULL): 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 31/31 [00:07<00:00,  4.28it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO 11-20 11:37:01 [gpu_model_runner.py:3118] Graph capturing finished in 21 secs, took 1.12 GiB\n",
      "INFO 11-20 11:37:01 [vllm_utils.py:714] Unsloth: Patched vLLM v1 graph capture finished in 21 secs.\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO 11-20 11:37:03 [gpu_worker.py:391] Free memory on device (21.91/22.16 GiB) on startup. Desired GPU memory utilization is (0.8661508568217998, 19.19 GiB). Actual usage is 8.96 GiB for weight, 1.23 GiB for peak activation, 0.02 GiB for non-torch memory, and 1.12 GiB for CUDAGraph memory. Replace gpu_memory_utilization config with `--kv-cache-memory=8287450624` to fit into requested memory, or `--kv-cache-memory=11200312832` to fully utilize gpu memory. Current kv cache memory in use is 9642210816 bytes.\n",
      "INFO 11-20 11:37:03 [core.py:218] init engine (profile, create kv cache, warmup model) took 91.69 seconds\n",
      "INFO 11-20 11:37:04 [llm.py:295] Supported_tasks: ('generate',)\n",
      "INFO 11-20 11:37:04 [__init__.py:36] No IOProcessor plugins requested by the model\n",
      "Unsloth: Just some info: will skip parsing ['layer_norm1', 'norm2', 'norm', 'post_feedforward_layernorm', 'q_norm', 'post_layernorm', 'k_norm', 'norm1', 'pre_feedforward_layernorm', 'ffn_norm', 'input_layernorm', 'post_attention_layernorm', 'attention_norm', 'layer_norm2']\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "73eef3d9649d41e3bf1a97c78a0358c2",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Loading checkpoint shards:   0%|          | 0/2 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Performing substitution for additional_keys=set()\n",
      "Unsloth: Just some info: will skip parsing ['layer_norm1', 'norm2', 'cross_attn_input_layernorm', 'norm', 'post_feedforward_layernorm', 'q_norm', 'cross_attn_post_attention_layernorm', 'post_layernorm', 'k_norm', 'norm1', 'pre_feedforward_layernorm', 'ffn_norm', 'input_layernorm', 'post_attention_layernorm', 'attention_norm', 'layer_norm2']\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Unsloth 2025.11.3 patched 36 layers with 36 QKV layers, 36 O layers and 36 MLP layers.\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "os.environ['UNSLOTH_VLLM_STANDBY'] = \"1\" # Unsloth standby saves 30%+ memory for RL\n",
    "from unsloth import FastLanguageModel\n",
    "import torch\n",
    "max_seq_length = 2048 # Can increase for longer reasoning traces\n",
    "lora_rank = 32 # Larger rank = smarter, but slower\n",
    "\n",
    "model, tokenizer = FastLanguageModel.from_pretrained(\n",
    "    model_name = \"unsloth/Qwen3-8B\",\n",
    "    max_seq_length = max_seq_length,\n",
    "    load_in_4bit = False, # False for LoRA 16bit\n",
    "    fast_inference = True, # Enable vLLM fast inference\n",
    "    max_lora_rank = lora_rank,\n",
    "    load_in_fp8 = True, # Float8 RL / GRPO!\n",
    ")\n",
    "\n",
    "model = FastLanguageModel.get_peft_model(\n",
    "    model,\n",
    "    r = lora_rank, # Choose any number > 0 ! Suggested 8, 16, 32, 64, 128\n",
    "    target_modules = [\n",
    "        \"q_proj\", \"k_proj\", \"v_proj\", \"o_proj\",\n",
    "        \"gate_proj\", \"up_proj\", \"down_proj\",\n",
    "    ],\n",
    "    lora_alpha = lora_rank*2, # *2 speeds up training\n",
    "    use_gradient_checkpointing = \"unsloth\", # Reduces memory usage\n",
    "    random_state = 3407,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "XtiVp0It1IKe"
   },
   "source": [
    "Let's call the model without doing any RL / GRPO:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "6mojUOPYE_1x",
    "outputId": "94996756-114c-4e74-d7d5-8922c66e67f5"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<|im_start|>user\n",
      "Solve x^5 + 3x^4 - 10 = 3.<|im_end|>\n",
      "<|im_start|>assistant\n",
      "<think>\n",
      "Okay, so I need to solve this equation: x^5 + 3x^4 - 10 = 3. Let me start by writing it down again to make sure I have it right. \n",
      "\n",
      "x^5 + 3x^4 - 10 = 3. \n",
      "\n",
      "Hmm, first step is probably to get all the terms on one side so that the equation equals zero. That usually makes it easier to handle. So if I subtract 3 from both sides, that should do it. Let me do that:\n",
      "\n",
      "x^5 + 3x^4 - 10 - 3 = 0\n",
      "\n",
      "Simplifying the constants: -10 - 3 is -13. So the equation becomes:\n",
      "\n",
      "x^5 + 3x^4 - 13 = 0\n",
      "\n",
      "Alright, so now I have a fifth-degree polynomial equation: x^5 + 3x^4 - 13 = 0. Solving fifth-degree equations can be tricky because there's no general formula like the quadratic formula for higher degrees. I remember that for polynomials of degree five or higher, there's no solution in radicals, so we might need to use numerical methods or factor it if possible. \n",
      "\n",
      "First, let me check if there are any rational roots using the Rational Root Theorem. The Rational Root Theorem says that any possible rational root, p/q, is a factor of the constant term divided by a factor of the leading coefficient. In this case, the constant term is -13 and the leading coefficient is 1. So the possible rational roots are \u00b11, \u00b113. \n",
      "\n",
      "Let me test these values one by one. \n",
      "\n",
      "First, let's try x = 1:\n",
      "\n",
      "1^5 + 3*(1)^4 - 13 = 1 + 3 - 13 = -9 \u2260 0. Not a root.\n",
      "\n",
      "Next, x = -1:\n",
      "\n",
      "(-1)^5 + 3*(-1)^4 - 13 = -1 + 3*1 -13 = -1 + 3 -13 = -11 \u2260 0. Not a root.\n",
      "\n",
      "How about x = 13? That seems like a big number, but let's see:\n",
      "\n",
      "13^5 + 3*(13)^4 - 13. That's going to be a huge number, definitely not zero. Similarly, x = -13 would also be a huge negative number\n"
     ]
    }
   ],
   "source": [
    "messages = [\n",
    "    {\"role\": \"user\", \"content\": \"Solve x^5 + 3x^4 - 10 = 3.\"},\n",
    "]\n",
    "inputs = tokenizer.apply_chat_template(\n",
    "    messages,\n",
    "    add_generation_prompt = True,\n",
    "    return_tensors = \"pt\",\n",
    "    return_dict = True,\n",
    "    reasoning_effort = \"low\",\n",
    ").to(model.device)\n",
    "from transformers import TextStreamer\n",
    "_ = model.generate(**inputs, max_new_tokens = 512, use_cache=True, streamer = TextStreamer(tokenizer))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "gulYwrvz1LyK"
   },
   "source": [
    "Let's do another question:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 204,
     "referenced_widgets": [
      "bd04e7cb11bd49849c34fb539a842a72",
      "f5f675fa5d3d43af958f088010366221",
      "6321887e55dc4164af7aba72d7f6cab3",
      "d4744efb69fc43ed94fa2d87a75786f1",
      "c18fcefc94834fc2a821ed59398ffe9a",
      "c5410db028b74a1595a237d6d6658c17",
      "ca02f5a45e1d4bf8b57dc8cf4a691244",
      "dfd5be51305143288a31c5e9b8c31ef6",
      "f0b00790c7fe4bc184a8144d9f8c7102",
      "eca16a8fe2a14f62bd6dd332da13cb9a",
      "1bd69459e70541108d04c3e55d174498",
      "94ab94e59a8f4198b1388900f7e1ff67",
      "880fe5fe5fef4d148b59cb2a79086c44",
      "77bdbac579db43088ab0b956a7ef6647",
      "8e864ca2c8214556a1d99c7fc92a4bbb",
      "29443ef92de645bbabe1a59cbc2fcff9",
      "b2db1bc25fc94f04bed536bdb2eeda6b",
      "dd2621233e984977bfa13568f6ddae4b",
      "a509ae72e1c54c87b5f6e2f1ac829d9f",
      "d8c10bd8d7aa4401912f05e256834cb5",
      "81b13ca5550d401e965b304e3745f1ff",
      "853ccf3a067f4b9d9aa101897d757bc9"
     ]
    },
    "id": "aXe9jd0hFBj8",
    "outputId": "7ba63760-bf7b-4222-d30a-ac41d3a34054"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "bd04e7cb11bd49849c34fb539a842a72",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Adding requests:   0%|          | 0/1 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "94ab94e59a8f4198b1388900f7e1ff67",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Processed prompts:   0%|          | 0/1 [00:00<?, ?it/s, est. speed input: 0.00 toks/s, output: 0.00 toks/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.google.colaboratory.intrinsic+json": {
       "type": "string"
      },
      "text/plain": [
       "' - Answers\\nMath and Arithmetic\\nWhat is the sqrt of 101?\\nWiki User\\n\u2219 2017-11-17 11:59:41\\nStudy now\\nSee answer (1)\\nBest Answer\\nCopy\\nsqrt(101) equals approximately 10.0498756\\nWiki User\\n\u2219 2017-11-17 11:59:41\\nThis answer is:\\nStudy guides\\nAlgebra\\n20 cards\\nA polynomial of degree zero is a constant term\\nThe grouping method of factoring can still be used when only some terms share a common factor\\nA number a power of a variable or a product of the two is a monomial while a polynomial is the of monomials\\nSee all cards\\n3.74\\n\u2606\u2605\u2606\u2605\u2606\u2605\u2606\u2605\u2606\u2605\\n561 Reviews\\nStudy now\\nAdd your answer:\\nEarn +20 pts\\nQ: What is the sqrt of 101?\\nWrite your answer...\\nSubmit\\nStill have questions?\\nWhat is sqrt 2 times sqrt 51?\\nsqrt(2) * sqrt(51) = sqrt(102) \u2248 10.0995\\nIs 101 square root rational?\\nsqrt(101) is irrational.\\nIs 101 a square root?\\nYes. sqrt(101) is about 10.05\\nWhat is the square root of 101 simplified?\\nsqrt(101) is already simplified as 101 is a prime number.\\nWhat is sqrt 101 divided by sqrt 100?\\nsqrt(101)/sqrt(100) = sqrt(101)/10 \u2248 10.0499/10 \u2248 1.00499 which is\\napproximately 1.005\\nWhat is the square root of 101?\\nThe square root of 101 is irrational. sqrt(101) \u2248 10.04987562112089.\\nWhat is the square root of x 101?\\nsqrt(x + 101)\\nWhat is sqrt 100 plus sqrt 101?\\nsqrt100 = 10 and sqrt101 is irrational'"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text = \"What is the sqrt of 101?\"\n",
    "\n",
    "from vllm import SamplingParams\n",
    "sampling_params = SamplingParams(\n",
    "    temperature = 1.0,\n",
    "    top_k = 50,\n",
    "    max_tokens = 512,\n",
    ")\n",
    "output = model.fast_generate(\n",
    "    [text],\n",
    "    sampling_params = sampling_params,\n",
    "    lora_request = None,\n",
    ")[0].outputs[0].text\n",
    "\n",
    "output"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "W9DuiVRLhMco"
   },
   "source": [
    "### GRPO chat template\n",
    "Since we're using a base model, we should set a chat template. You can make your own chat template as well!\n",
    "1. DeepSeek uses `<think>` and `</think>`, but this is **not** necessary - you can customize it however you like!\n",
    "2. A `system_prompt` is recommended to at least guide the model's responses."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 52
    },
    "id": "6UjowCbT-cFz",
    "outputId": "d1e9353a-3e13-4a0c-c011-0fd36a72f3d5"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.google.colaboratory.intrinsic+json": {
       "type": "string"
      },
      "text/plain": [
       "'You are given a problem.\\nThink about the problem and provide your working out.\\nPlace it between <start_working_out> and <end_working_out>.\\nThen, provide your solution between <SOLUTION></SOLUTION>'"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reasoning_start = \"<start_working_out>\" # Acts as <think>\n",
    "reasoning_end   = \"<end_working_out>\"   # Acts as </think>\n",
    "solution_start  = \"<SOLUTION>\"\n",
    "solution_end    = \"</SOLUTION>\"\n",
    "\n",
    "system_prompt = \\\n",
    "f\"\"\"You are given a problem.\n",
    "Think about the problem and provide your working out.\n",
    "Place it between {reasoning_start} and {reasoning_end}.\n",
    "Then, provide your solution between {solution_start}{solution_end}\"\"\"\n",
    "system_prompt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "zGgs0MJkDkYL"
   },
   "source": [
    "We create a simple chat template below. Notice `add_generation_prompt` includes prepending `<start_working_out>` to guide the model to start its reasoning process."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "Y3fF9gMujY02"
   },
   "outputs": [],
   "source": [
    "chat_template = \\\n",
    "    \"{% if messages[0]['role'] == 'system' %}\"\\\n",
    "        \"{{ messages[0]['content'] + eos_token }}\"\\\n",
    "        \"{% set loop_messages = messages[1:] %}\"\\\n",
    "    \"{% else %}\"\\\n",
    "        \"{{ '{system_prompt}' + eos_token }}\"\\\n",
    "        \"{% set loop_messages = messages %}\"\\\n",
    "    \"{% endif %}\"\\\n",
    "    \"{% for message in loop_messages %}\"\\\n",
    "        \"{% if message['role'] == 'user' %}\"\\\n",
    "            \"{{ message['content'] }}\"\\\n",
    "        \"{% elif message['role'] == 'assistant' %}\"\\\n",
    "            \"{{ message['content'] + eos_token }}\"\\\n",
    "        \"{% endif %}\"\\\n",
    "    \"{% endfor %}\"\\\n",
    "    \"{% if add_generation_prompt %}{{ '{reasoning_start}' }}\"\\\n",
    "    \"{% endif %}\"\n",
    "\n",
    "# Replace with out specific template:\n",
    "chat_template = chat_template\\\n",
    "    .replace(\"'{system_prompt}'\",   f\"'{system_prompt}'\")\\\n",
    "    .replace(\"'{reasoning_start}'\", f\"'{reasoning_start}'\")\n",
    "tokenizer.chat_template = chat_template"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "vEcLdymBEHdk"
   },
   "source": [
    "Let's see how our chat template behaves on an example:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 70
    },
    "id": "BciEDYSSYFNj",
    "outputId": "c1feaa34-4e1a-4c36-b3ec-731de2a73da7"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.google.colaboratory.intrinsic+json": {
       "type": "string"
      },
      "text/plain": [
       "\"You are given a problem.\\nThink about the problem and provide your working out.\\nPlace it between <start_working_out> and <end_working_out>.\\nThen, provide your solution between <SOLUTION></SOLUTION><|im_end|>What is 1+1?<start_working_out>I think it's 2.<end_working_out><SOLUTION>2</SOLUTION><|im_end|>What is 2+2?<start_working_out>\""
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tokenizer.apply_chat_template([\n",
    "    {\"role\" : \"user\", \"content\" : \"What is 1+1?\"},\n",
    "    {\"role\" : \"assistant\", \"content\" : f\"{reasoning_start}I think it's 2.{reasoning_end}{solution_start}2{solution_end}\"},\n",
    "    {\"role\" : \"user\", \"content\" : \"What is 2+2?\"},\n",
    "], tokenize = False, add_generation_prompt = True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "_mdsuGjxHrjT"
   },
   "source": [
    "### Pre fine-tuning for formatting\n",
    "We now use a subset of NVIDIA's [Open Math Reasoning dataset](https://huggingface.co/datasets/nvidia/OpenMathReasoning) which was filtered to only include high quality DeepSeek R1 traces.\n",
    "\n",
    "We'll only filter ~59 or so examples to first \"prime\" / pre fine-tune the model to understand our custom GRPO formatting."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 424
    },
    "id": "AXxM2lStVIkd",
    "outputId": "922bd11d-9042-447d-b66b-fbfb8c22ce12"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.google.colaboratory.intrinsic+json": {
       "summary": "{\n  \"name\": \"dataset\",\n  \"rows\": 7507,\n  \"fields\": [\n    {\n      \"column\": \"expected_answer\",\n      \"properties\": {\n        \"dtype\": \"category\",\n        \"num_unique_values\": 868,\n        \"samples\": [\n          \"672\",\n          \"335\",\n          \"575757\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"problem\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 3895,\n        \"samples\": [\n          \"A club with 7 members forms three-person committees, but no two committees can have more than one member in common. What is the maximum number of committees that can be formed?\",\n          \"Find the smallest integer \\\\( a > 2 \\\\) such that \\\\( 2 \\\\mid a \\\\), \\\\( 3 \\\\mid (a+1) \\\\), \\\\( 4 \\\\mid (a+2) \\\\), \\\\( 5 \\\\mid (a+3) \\\\), and \\\\( 6 \\\\mid (a+4) \\\\).\",\n          \"Given the polynomial equation \\\\(x^3 - x = -1\\\\) with roots \\\\(a\\\\), \\\\(b\\\\), and \\\\(c\\\\), find the value of \\\\(\\\\frac{1}{1+a} + \\\\frac{1}{1+b} + \\\\frac{1}{1+c}\\\\).\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"generated_solution\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 7507,\n        \"samples\": [\n          \"<think>\\nOkay, let's see. I need to solve this problem where there are three prime numbers p, q, and r. The equations given are pq + qr + rp = 191 and p + q = r - 1. The goal is to find p + q + r. Hmm, primes, so they must be 2 or odd primes. Let me start by analyzing the problem step by step.\\n\\nFirst, the equation p + q = r - 1. If I can express r in terms of p and q, maybe I can substitute that into the first equation. Let's try that. So, from the second equation, r = p + q + 1. That seems straightforward. Now, substituting this into the first equation, we get pq + qr + rp = 191. Let's replace r with (p + q + 1).\\n\\nSo, substituting, the first equation becomes:\\n\\npq + q(p + q + 1) + p(p + q + 1) = 191.\\n\\nLet me expand each term:\\n\\nFirst term: pq.\\n\\nSecond term: q*(p + q + 1) = pq + q\\u00b2 + q.\\n\\nThird term: p*(p + q + 1) = p\\u00b2 + pq + p.\\n\\nNow, adding all these together:\\n\\npq + (pq + q\\u00b2 + q) + (p\\u00b2 + pq + p) = 191.\\n\\nCombine like terms:\\n\\npq + pq + pq = 3pq.\\n\\nq\\u00b2 + p\\u00b2.\\n\\nq + p.\\n\\nSo altogether, the equation becomes:\\n\\np\\u00b2 + q\\u00b2 + 3pq + p + q = 191.\\n\\nHmm. Let me note that.\\n\\nAlternatively, maybe I can factor this expression. Let me see. Let's try to group terms. Wait, another approach: since r = p + q + 1, then p + q + r = (p + q) + (p + q + 1) = 2(p + q) + 1. So if I can find p + q, then multiplying by 2 and adding 1 gives me the answer. That's useful. So perhaps instead of dealing with the first equation directly, I can express it in terms of p + q.\\n\\nBut maybe let's work with the equation we derived: p\\u00b2 + q\\u00b2 + 3pq + p + q = 191.\\n\\nWait, another thought: p\\u00b2 + q\\u00b2 + 3pq. Let's recall that (p + q)^2 = p\\u00b2 + 2pq + q\\u00b2, so p\\u00b2 + q\\u00b2 + 3pq = (p + q)^2 + pq.\\n\\nTherefore, the equation can be rewritten as:\\n\\n(p + q)^2 + pq + p + q = 191.\\n\\nLet me set S = p + q, and P = pq. Then the equation becomes:\\n\\nS\\u00b2 + P + S = 191.\\n\\nBut from the second equation, we know that r = S + 1, so since we need to find S + r = S + (S + 1) = 2S + 1. So our target is 2S + 1. So if we can find S, we can find the answer.\\n\\nNow, the equation is S\\u00b2 + P + S = 191. But S and P are related as S = p + q, P = pq. For two primes p and q, their sum and product. Since p and q are primes, maybe we can list possible primes that add up to S and multiply to P. However, since S and P are variables here, maybe we can express P in terms of S from the equation.\\n\\nFrom S\\u00b2 + P + S = 191, so P = 191 - S\\u00b2 - S.\\n\\nTherefore, P = -S\\u00b2 - S + 191. But P = pq must be positive, so -S\\u00b2 - S + 191 > 0. Therefore, S\\u00b2 + S < 191. Let's see the possible values of S. Since S is the sum of two primes, which are at least 2 each, so S is at least 2 + 2 = 4. Also, since S\\u00b2 + S < 191, let's solve S\\u00b2 + S - 191 < 0. Let's find the roots of S\\u00b2 + S - 191 = 0.\\n\\nUsing quadratic formula: S = [-1 \\u00b1 sqrt(1 + 4*191)] / 2 = [-1 \\u00b1 sqrt(765)] / 2. sqrt(765) is approx 27.66, so S \\u2248 (-1 + 27.66)/2 \\u2248 13.33. So the positive root is approximately 13.33, so S must be less than 13.33. Therefore, S can be integers from 4 up to 13.\\n\\nSo possible S values: 4,5,6,7,8,9,10,11,12,13.\\n\\nBut since p and q are primes, their sum S must be even or odd. Since except for 2, all primes are odd. So if both p and q are odd primes, their sum is even. If one is 2 and the other is odd, then their sum is odd. So S can be even or odd. So possible values of S (from 4 to 13) can be checked.\\n\\nBut maybe instead of all possible S, let's check possible S values from 4 to 13 and see if for each S, P = 191 - S\\u00b2 - S, and check if P can be expressed as the product of two primes that add up to S.\\n\\nAlternatively, maybe first check which S gives P as a product of two primes.\\n\\nLet's start with S=4. Then P = 191 - 16 -4 = 171. Then check if 171 can be written as product of two primes that add up to 4. But 4 is the sum. The primes could be 2 and 2 (since 2+2=4). Then 2*2=4, but P here is 171. 4 \\u2260 171, so S=4 is invalid.\\n\\nNext S=5: P=191 -25 -5=161. 161 factors into 7*23. Check if 7 + 23 = 30, which is not 5. So that's not possible. Alternatively, are there primes adding to 5? 2 and 3, since 2+3=5. Then P=2*3=6. But 6 \\u2260 161. So S=5 invalid.\\n\\nS=6: P=191 -36 -6=149. 149 is a prime number, so can't be expressed as product of two primes. So invalid.\\n\\nS=7: P=191 -49 -7=135. 135 factors into 5*27 (but 27 not prime), 3*45, 9*15, none primes. So no. So invalid.\\n\\nS=8: P=191 -64 -8=119. 119 factors into 7*17. Check if 7+17=24\\u22608. Primes adding to 8 are 3+5=8 or 5+3. Then P=15. But 15\\u2260119. So invalid.\\n\\nS=9: P=191 -81 -9=101. 101 is prime, so no.\\n\\nS=10: P=191 -100 -10=81. 81=9*9, but 9 not prime. So no.\\n\\nS=11: P=191 -121 -11=59. 59 is prime. So no.\\n\\nS=12: P=191 -144 -12=35. 35=5*7. Check if 5 +7=12? Yes! 5 +7=12. So here, S=12, which is p + q=12, and pq=35. 5 and 7 are primes. So this works.\\n\\nSo then p=5 and q=7, or p=7 and q=5. Then r = S + 1 =12 +1=13. Check if r is prime: 13 is prime. So yes. So then p, q, r are 5,7,13 or 7,5,13. Then p + q + r =5 +7 +13=25. So 25 would be the answer.\\n\\nWait, let me check S=13 as well just to be thorough. S=13: P=191 -169 -13=9. 9=3*3. Check if 3 +3=6\\u226013. So no. So no.\\n\\nTherefore, only S=12 gives valid primes. So the answer is 25.\\n\\nLet me verify the original equations. pq + qr + rp. Let p=5, q=7, r=13. Then 5*7 +7*13 +13*5 =35 +91 +65=35+91=126+65=191. Which matches. And p + q =5 +7=12. r -1=13 -1=12. So that also matches. So it's correct. Therefore, the answer is 25.\\n</think>To solve the problem where three prime numbers \\\\( p, q, \\\\) and \\\\( r \\\\) satisfy the equations \\\\( pq + qr + rp = 191 \\\\) and \\\\( p + q = r - 1 \\\\), we proceed as follows:\\n\\n1. **Express \\\\( r \\\\) in terms of \\\\( p \\\\) and \\\\( q \\\\):**\\n   From the equation \\\\( p + q = r - 1 \\\\), we can solve for \\\\( r \\\\):\\n   \\\\[\\n   r = p + q + 1\\n   \\\\]\\n\\n2. **Substitute \\\\( r \\\\) into the first equation:**\\n   Substitute \\\\( r = p + q + 1 \\\\) into the equation \\\\( pq + qr + rp = 191 \\\\):\\n   \\\\[\\n   pq + q(p + q + 1) + p(p + q + 1) = 191\\n   \\\\]\\n   Expanding and combining like terms:\\n   \\\\[\\n   pq + pq + q^2 + q + p^2 + pq + p = 191\\n   \\\\]\\n   Simplify:\\n   \\\\[\\n   p^2 + q^2 + 3pq + p + q = 191\\n   \\\\]\\n\\n3. **Introduce new variables:**\\n   Let \\\\( S = p + q \\\\) and \\\\( P = pq \\\\). The equation becomes:\\n   \\\\[\\n   S^2 + P + S = 191\\n   \\\\]\\n\\n4. **Express \\\\( r \\\\) in terms of \\\\( S \\\\):**\\n   Since \\\\( r = p + q + 1 = S + 1 \\\\), we need to find \\\\( S \\\\) such that \\\\( S^2 + P + S = 191 \\\\) and \\\\( P = pq \\\\) is the product of two primes \\\\( p \\\\) and \\\\( q \\\\) that sum to \\\\( S \\\\).\\n\\n5. **Determine possible values for \\\\( S \\\\):**\\n   Solve the inequality \\\\( S^2 + S < 191 \\\\):\\n   \\\\[\\n   S^2 + S - 191 < 0\\n   \\\\]\\n   Using the quadratic formula \\\\( S = \\\\frac{-1 \\\\pm \\\\sqrt{1 + 4 \\\\cdot 191}}{2} \\\\):\\n   \\\\[\\n   S = \\\\frac{-1 \\\\pm \\\\sqrt{765}}{2}\\n   \\\\]\\n   Since \\\\( \\\\sqrt{765} \\\\approx 27.66 \\\\), we have:\\n   \\\\[\\n   S \\\\approx \\\\frac{-1 + 27.66}{2} \\\\approx 13.33\\n   \\\\]\\n   Therefore, \\\\( S \\\\) must be an integer between 4 and 13.\\n\\n6. **Check possible values of \\\\( S \\\\):**\\n   - For \\\\( S = 12 \\\\):\\n     \\\\[\\n     P = 191 - 12^2 - 12 = 191 - 144 - 12 = 35\\n     \\\\]\\n     Check if \\\\( 35 \\\\) can be written as the product of two primes that sum to 12:\\n     \\\\[\\n     35 = 5 \\\\times 7 \\\\quad \\\\text{and} \\\\quad 5 + 7 = 12\\n     \\\\]\\n     This works. So \\\\( p = 5 \\\\) and \\\\( q = 7 \\\\).\\n\\n7. **Find \\\\( r \\\\):**\\n   \\\\[\\n   r = S + 1 = 12 + 1 = 13\\n   \\\\]\\n\\n8. **Verify the solution:**\\n   - Check \\\\( pq + qr + rp = 191 \\\\):\\n     \\\\[\\n     5 \\\\times 7 + 7 \\\\times 13 + 13 \\\\times 5 = 35 + 91 + 65 = 191\\n     \\\\]\\n   - Check \\\\( p + q = r - 1 \\\\):\\n     \\\\[\\n     5 + 7 = 12 \\\\quad \\\\text{and} \\\\quad 13 - 1 = 12\\n     \\\\]\\n\\nSince all conditions are satisfied, the final answer is:\\n\\\\[\\n\\\\boxed{25}\\n\\\\]\",\n          \"<think>\\nOkay, let's see. I need to solve this problem where x and y are positive integers satisfying 2(x + y) = gcd(x, y) + lcm(x, y). And I have to find the ratio of the lcm to the gcd of x and y. Hmm, okay, let's break this down.\\n\\nFirst, I remember that for any two positive integers, the product of the lcm and gcd of those numbers is equal to the product of the numbers themselves. So, lcm(x, y) * gcd(x, y) = x * y. That might come in handy here. Let me note that down: lcm(x,y)*gcd(x,y) = x*y.\\n\\nGiven the equation 2(x + y) = gcd(x, y) + lcm(x, y), maybe I can express everything in terms of gcd and the ratio of x and y. Since gcd and lcm are involved, it might be helpful to let d = gcd(x, y), and then express x and y as x = d*a and y = d*b, where a and b are coprime integers (their gcd is 1). That's a standard approach for problems involving gcd and lcm.\\n\\nSo let me set d = gcd(x, y). Then x = d*a, y = d*b, with gcd(a, b) = 1. Then, the lcm(x, y) would be d*a*b, because lcm(x, y) = x*y / gcd(x, y) = (d*a*d*b)/d = d*a*b. Right, so lcm(x,y) = d*a*b.\\n\\nSubstituting these into the original equation: 2(x + y) = gcd(x, y) + lcm(x, y).\\n\\nSubstituting x = d*a, y = d*b, gcd = d, lcm = d*a*b. Then:\\n\\n2(d*a + d*b) = d + d*a*b.\\n\\nFactor out d from the left side: 2d(a + b) = d(1 + a*b).\\n\\nSince d is a positive integer, we can divide both sides by d, yielding:\\n\\n2(a + b) = 1 + a*b.\\n\\nSo now the equation simplifies to 2(a + b) = a*b + 1, where a and b are coprime positive integers. Hmm, okay. Now we have a simpler equation to solve: a*b - 2a - 2b + 1 = 0. Let me rearrange that:\\n\\na*b - 2a - 2b + 1 = 0.\\n\\nHmm, maybe factor this equation? Let me see. Adding 4 to both sides might help in factoring. Let's try:\\n\\na*b - 2a - 2b + 1 + 4 - 4 = 0\\n\\nSo, a*b - 2a - 2b + 4 = 3.\\n\\nWait, not sure. Alternatively, perhaps rearrange the terms:\\n\\na*b - 2a - 2b = -1.\\n\\nThen, add 4 to both sides:\\n\\na*b - 2a - 2b + 4 = 3.\\n\\nNow, left side can be factored as (a - 2)(b - 2) = 3. Because expanding (a - 2)(b - 2) gives a*b - 2a - 2b + 4. Yes, that's right. So:\\n\\n(a - 2)(b - 2) = 3.\\n\\nSince a and b are positive integers and coprime, we need to find pairs (a, b) such that their product is 3 when each is reduced by 2. Also, since a and b are coprime, (a - 2) and (b - 2) must be divisors of 3, which is prime. The positive divisors of 3 are 1 and 3.\\n\\nSo possible pairs (since a and b are positive integers, a - 2 and b - 2 must be at least such that a and b are positive. Let's see:\\n\\nCase 1: (a - 2) = 1 and (b - 2) = 3. Then, a = 3, b = 5. Check if gcd(a, b) = 1. gcd(3, 5) = 1, which is good.\\n\\nCase 2: (a - 2) = 3 and (b - 2) = 1. Then, a = 5, b = 3. Similarly, gcd(5, 3) = 1. So this is also valid.\\n\\nBut also, since 3 is prime, the only positive divisors are 1 and 3. But since we're considering positive integers, we could also consider if one of them is negative? But since a and b are positive, a - 2 and b - 2 must be positive or zero? Wait, but 3 is positive, so the factors must both be positive. Because if one of (a - 2) or (b - 2) were negative, their product would be negative, but 3 is positive. So both (a - 2) and (b - 2) must be positive. Thus, only the two cases above.\\n\\nAlternatively, maybe (a - 2) and (b - 2) could be 3 and 1 in some order, which gives the two cases. So the possible (a, b) are (3, 5) and (5, 3). Since a and b are interchangeable (since x and y are symmetric in the problem), these two cases would yield the same results.\\n\\nSo now, let's see. For (a, b) = (3, 5), then x = d*3, y = d*5. Similarly, for (a, b) = (5, 3), x = d*5, y = d*3. But since the problem is symmetric in x and y, both cases are equivalent.\\n\\nNow, since we need to find the ratio lcm(x, y)/gcd(x, y), let's compute that.\\n\\nRecall that lcm(x, y)/gcd(x, y) = (d*a*b)/d = a*b. So it's simply a*b. Since in both cases, a and b are 3 and 5, the product is 15. Therefore, the ratio is 15.\\n\\nWait, that seems too straightforward. Let me check.\\n\\nIf the ratio is a*b, then yes. Because lcm(x, y) is d*a*b and gcd(x, y) is d, so their ratio is (d*a*b)/d = a*b. Since a and b are 3 and 5, 3*5=15. Therefore, the answer is 15. So the answer is 15.\\n\\nBut let me verify with an example. Let's take d=1. Then x=3, y=5. Then gcd(3,5)=1, lcm=15. Then 2(x + y) = 2*(8) = 16. The right side is 1 + 15=16. So that works. If d=1, then 2(3+5)=16=1 +15.\\n\\nWhat if d=2? Then x=6, y=10. gcd(6,10)=2, lcm=30. Then 2(6 + 10)=2*16=32. The right side is 2 +30=32. So that also works. Then the ratio lcm/gcd is 30/2=15. So regardless of d, the ratio is always 15. Wait, because if x = d*a, y = d*b, then lcm(x,y)/gcd(x,y) = (d*a*b)/d = a*b, which is 15 as in the first case. So regardless of d, the ratio is always 15. Therefore, the answer is 15.\\n\\nSo even if d is some other positive integer, the ratio remains a*b =15. Therefore, the required ratio is 15.\\n\\nTherefore, the answer is 15. So \\\\boxed{15}.\\n\\n**Final Answer**\\n\\\\boxed{15}\\n</think>Given \\\\( x \\\\) and \\\\( y \\\\) are positive integers such that \\\\( 2(x + y) = \\\\gcd(x, y) + \\\\text{lcm}(x, y) \\\\), we need to find \\\\( \\\\frac{\\\\text{lcm}(x, y)}{\\\\gcd(x, y)} \\\\).\\n\\nFirst, let \\\\( d = \\\\gcd(x, y) \\\\). Then, we can express \\\\( x \\\\) and \\\\( y \\\\) as \\\\( x = d \\\\cdot a \\\\) and \\\\( y = d \\\\cdot b \\\\), where \\\\( \\\\gcd(a, b) = 1 \\\\). The least common multiple (lcm) of \\\\( x \\\\) and \\\\( y \\\\) is given by \\\\( \\\\text{lcm}(x, y) = d \\\\cdot a \\\\cdot b \\\\).\\n\\nSubstituting these into the given equation:\\n\\\\[\\n2(d \\\\cdot a + d \\\\cdot b) = d + d \\\\cdot a \\\\cdot b\\n\\\\]\\nDividing both sides by \\\\( d \\\\):\\n\\\\[\\n2(a + b) = 1 + a \\\\cdot b\\n\\\\]\\nRearranging terms, we get:\\n\\\\[\\na \\\\cdot b - 2a - 2b + 1 = 0\\n\\\\]\\nAdding 4 to both sides to factorize:\\n\\\\[\\na \\\\cdot b - 2a - 2b + 4 = 3\\n\\\\]\\nThis can be factored as:\\n\\\\[\\n(a - 2)(b - 2) = 3\\n\\\\]\\nThe positive integer solutions for \\\\((a - 2)\\\\) and \\\\((b - 2)\\\\) are 1 and 3. Thus, the possible pairs \\\\((a, b)\\\\) are \\\\((3, 5)\\\\) and \\\\((5, 3)\\\\). Since \\\\( a \\\\) and \\\\( b \\\\) are coprime, both pairs are valid.\\n\\nThe ratio \\\\( \\\\frac{\\\\text{lcm}(x, y)}{\\\\gcd(x, y)} \\\\) is given by:\\n\\\\[\\n\\\\frac{\\\\text{lcm}(x, y)}{\\\\gcd(x, y)} = \\\\frac{d \\\\cdot a \\\\cdot b}{d} = a \\\\cdot b\\n\\\\]\\nFor both pairs \\\\((3, 5)\\\\) and \\\\((5, 3)\\\\), the product \\\\( a \\\\cdot b = 15 \\\\).\\n\\nThus, the final answer is:\\n\\\\[\\n\\\\boxed{15}\\n\\\\]\",\n          \"<think>\\nOkay, so I need to find the remainder when the product of all odd numbers from 1 to 2005 is divided by 1000. Hmm, let's think about how to approach this. \\n\\nFirst, the product is 1 \\u00d7 3 \\u00d7 5 \\u00d7 ... \\u00d7 2005. That's a lot of numbers! Since we're dealing with division by 1000, maybe modular arithmetic can help here. The remainder when divided by 1000 is equivalent to the product modulo 1000. But calculating such a huge product directly seems impossible. There has to be a smarter way.\\n\\nI remember that when dealing with factorials and remainders, factors of 2 and 5 can create trailing zeros. However, here we're only multiplying odd numbers, so there are no factors of 2. But there might still be factors of 5. Wait, 1000 is 8\\u00d7125, which is 2^3 \\u00d7 5^3. Since the product is all odd numbers, it won't have factors of 2, but it can have factors of 5. Therefore, the product will be divisible by 5^3, but since there are no 2s, the product modulo 1000 might not be zero. Hmm, maybe I need to compute the product modulo 1000, but adjusting for the factors of 5?\\n\\nAlternatively, maybe split the problem into modulo 8 and modulo 125, then use the Chinese Remainder Theorem (CRT) to combine the results. Since 1000 = 8 \\u00d7 125, and 8 and 125 are coprime, CRT says that if I can find the remainder modulo 8 and modulo 125, then I can combine them to find the remainder modulo 1000. That might be a good approach.\\n\\nLet me start with modulo 8. The product is 1\\u00d73\\u00d75\\u00d77\\u00d79\\u00d7...\\u00d72005. But modulo 8, odd numbers repeat every 8 numbers. Let's see, the residues modulo 8 of odd numbers are 1,3,5,7,1,3,5,7,... So the pattern repeats every 4 terms. Wait, no. Wait, the numbers go 1,3,5,7,9\\u22611,11\\u22613,13\\u22615,15\\u22617, etc. So every 8 numbers, the cycle of residues 1,3,5,7 repeats twice. Wait, actually, modulo 8, the odd residues cycle every 4 numbers. Let's confirm:\\n\\n1 mod 8 =1\\n\\n3 mod8=3\\n\\n5 mod8=5\\n\\n7 mod8=7\\n\\n9 mod8=1\\n\\n11 mod8=3\\n\\n13 mod8=5\\n\\n15 mod8=7\\n\\nYes, every 4 terms, the cycle repeats. So how many terms are in the product 1\\u00d73\\u00d75\\u00d7...\\u00d72005? Let's find the number of terms first. The nth odd number is 2n-1. So 2n-1=2005 => n=(2005+1)/2=2006/2=1003. So there are 1003 terms.\\n\\nSo 1003 terms, each group of 4 terms (mod8) is 1\\u00d73\\u00d75\\u00d77=105. Then 105 mod8= 105 - 13\\u00d78=105-104=1. So each group of 4 terms multiplies to 1 mod8. Then how many full groups of 4 are there in 1003 terms? Let's divide 1003 by 4. 1003 \\u00f74=250.75. So 250 full groups, each contributing 1 mod8, and then a remainder of 3 terms. \\n\\nSo the total product modulo8 is (1^250) \\u00d7 (last three terms). The last three terms would be the terms after the 250th group. The 250th group ends at term 250\\u00d74=1000. So the 1001st term is 2\\u00d71001 -1=2001. Wait, no: the first term is 1=2\\u00d71-1, second term 3=2\\u00d72-1, so term k is 2k-1. Therefore, term 1001 is 2\\u00d71001 -1=2002-1=2001. Then the 1002nd term is 2003, 1003rd term is 2005. So the last three terms are 2001, 2003, 2005. Let's compute each mod8:\\n\\n2001 \\u00f78: 8\\u00d7250=2000, so 2001 mod8=1\\n\\n2003 mod8=3\\n\\n2005 mod8=5\\n\\nSo the last three terms modulo8 are 1\\u00d73\\u00d75=15 mod8=7.\\n\\nTherefore, total product mod8 is (1^250) \\u00d77=1\\u00d77=7 mod8.\\n\\nSo the remainder modulo8 is7.\\n\\nNow, we need to compute the product modulo125. This seems more complicated. Let's think.\\n\\nThe product is the product of all odd numbers from1 to2005. Wait, 2005=5\\u00d7401. So we can write the product as (1\\u00d73\\u00d75\\u00d77\\u00d7...\\u00d72005). Let's note that there are a lot of factors of 5 in this product, which would make the product divisible by 5 multiple times. However, modulo125 is 5^3, so if the product has at least three factors of 5, then modulo125 would be 0. Wait, but maybe even if it's divisible by 5^3, but we need to compute the actual remainder. Wait, but perhaps the product is divisible by 5^3, but when divided by 5^3, the remaining product modulo8 or something else. Wait, maybe not. Let me check how many factors of5 are in the product.\\n\\nThe number of factors of5 in the product:\\n\\nEach multiple of5 contributes at least one factor of5. Since we're dealing with odd numbers, the multiples of5 that are odd. So numbers divisible by5 but not by2. So numbers like5,15,25,...,2005. Let's count how many multiples of5 are in the product. The first term is5, which is5\\u00d71, then15=5\\u00d73,..., up to2005=5\\u00d7401. So the multiples of5 are5\\u00d7(1,3,5,...,401). Wait, 5\\u00d7k, where k is odd from1 to401. Because 5\\u00d7401=2005. So how many terms are there?\\n\\nThe number of terms k from1 to401 where k is odd. Since401 is odd, the number is (401 +1)/2=201. So there are201 multiples of5 in the product. Each contributes at least one factor of5. Additionally, multiples of25 contribute an extra factor of5. Similarly, multiples of125, 625, etc., contribute more factors.\\n\\nSo let's compute the total number of factors of5 in the product.\\n\\nNumber of multiples of5:201 (as above)\\n\\nNumber of multiples of25: These are numbers in the product divisible by25. Since the product includes numbers of the form5\\u00d7(odd numbers). So multiples of25 are numbers divisible by25, which are 25,75,125,...,2000. But 2005 is not divisible by25. Wait, wait, in the original product (all odd numbers up to2005), the multiples of25 must be odd multiples. So 25\\u00d71,25\\u00d73,..., up to the largest odd multiple less than or equal to2005.\\n\\n25\\u00d7k \\u22642005, where k is odd. Let's compute k_max:\\n\\n25k \\u22642005 => k \\u22642005/25=80.2. So the largest integer k is80, but since k has to be odd, the largest odd k is79. So 25\\u00d779=1975. Then 25\\u00d781=2025, which is over. So the multiples of25 in the product are25\\u00d71,25\\u00d73,...,25\\u00d779. Number of terms: (79-1)/2 +1=39 +1=40. Wait, from1 to79 odd numbers: number is (79+1)/2=40. So there are40 multiples of25.\\n\\nSimilarly, multiples of125:125\\u00d71,125\\u00d73,..., up to125\\u00d7k\\u22642005. 125\\u00d7k \\u22642005 =>k\\u226416.04. So k_max=15 (odd). So 125\\u00d715=1875. So multiples are125\\u00d71,125\\u00d73,...,125\\u00d715. Number of terms: (15-1)/2 +1=7+1=8.\\n\\nMultiples of625:625\\u00d71=625, next is625\\u00d73=1875, next is625\\u00d75=3125>2005. So only two multiples:625 and1875. But1875 is already counted as a multiple of125. So factors of625 contribute an extra factor of5 each. So number of multiples of625 is 2. 625 and1875.\\n\\nMultiples of3125:3125>2005, so none.\\n\\nSo total number of factors of5:\\n\\nFrom multiples of5:201\\n\\nFrom multiples of25:40 (each contributes an extra)\\n\\nFrom multiples of125:8 (each contributes another extra)\\n\\nFrom multiples of625:2 (each contributes another extra)\\n\\nTotal:201 +40 +8 +2=251.\\n\\nSo total factors of5 in the product:251.\\n\\nSimilarly, factors of2: since all numbers are odd, there are none. So the product is divisible by5^251 but not by2. So when dividing by5^3, since 251\\u22653, the product is divisible by5^3. Therefore, the product modulo125 is0? Wait, no, wait. Wait, 125 is5^3. If the product has at least three factors of5, then when divided by5^3, the quotient is an integer, but the remainder when divided by125 is0. So if the product is divisible by125, then the remainder is0. But the question is, when we divide the product by1000, which is8\\u00d7125, the remainder is to be found. However, we already considered that modulo8 is7, and modulo125 is... Hmm, but if modulo125 is0, then using CRT, we can say the remainder is a number congruent to7 mod8 and0 mod125. So we need to solve for x\\u22610 mod125 andx\\u22617 mod8.\\n\\nBut wait, let me confirm if modulo125 is indeed0. Let's check: since the product has at least three factors of5, then yes, the product is divisible by5^3, so product \\u22610 mod125. Therefore, modulo125 is0. Therefore, we have:\\n\\nx \\u22617 mod8\\n\\nx \\u22610 mod125\\n\\nWe need to find x such that x \\u22610 mod125 andx \\u22617 mod8. Let\\u2019s solve this system.\\n\\nLet x=125k. Then 125k\\u22617 mod8. Since125 mod8=5, so 5k\\u22617 mod8.\\n\\nWe solve 5k\\u22617 mod8.\\n\\nMultiply both sides by inverse of5 mod8. The inverse of5 mod8 is5, since5\\u00d75=25\\u22611 mod8. So multiply both sides by5:\\n\\nk\\u22617\\u00d75 mod8 =>k\\u226135 mod8 =>35\\u00f78=4*8=32, 35-32=3. So k\\u22613 mod8.\\n\\nTherefore, k=8m +3 for some integer m. Therefore, x=125(8m +3)=1000m +375. Therefore, the smallest non-negative solution is375. Therefore, the remainder is375 when divided by1000. So the answer is375.\\n\\nWait, but before accepting that, let me verify my steps again because this is tricky.\\n\\nFirst, confirming that the product is divisible by5^3: yes, since there are 251 factors of5, so 5^251 divides the product. Therefore, the product is divisible by5^3, so product\\u22610 mod125. That's correct.\\n\\nThen, solving x\\u22617 mod8 and x\\u22610 mod125. So x=125k. Then 125k\\u22615k mod8. So 5k\\u22617 mod8. Multiply both sides by inverse of5 mod8, which is5, since5\\u00d75=25\\u22611 mod8. So k\\u226135 mod8\\u22613 mod8. Therefore, k=8m +3, so x=125\\u00d73 +1000m=375 +1000m. So the minimal positive solution is375. So remainder is375 when divided by1000. That seems correct.\\n\\nBut wait, to make sure, let me check with an example. Let's take x=375. 375 \\u00f78=46*8=368, remainder7. So 375 mod8=7. 375 mod125=0. So yes, 375 satisfies both conditions. Therefore, the remainder is375. Therefore, the answer is\\\\boxed{375}.\\n\\nWait, but I need to make sure that my calculation for modulo8 and modulo125 are correct. Let me double-check the modulo8 calculation.\\n\\nEarlier, I considered that the product modulo8 is7. Let me recast that.\\n\\nThe product is1\\u00d73\\u00d75\\u00d77\\u00d7\\u2026\\u00d72005. When taking modulo8, each cycle of4 terms (1,3,5,7) multiplies to1\\u00d73\\u00d75\\u00d77=105\\u22611 mod8. Since 105/8=13\\u00d78=104, 105-104=1. Then, since there are1003 terms, how many cycles of4 are there? 1003 divided by4 is250 cycles with a remainder of3 terms. Then the product is (1)^250 \\u00d7 last3 terms.\\n\\nThe last3 terms are2001,2003,2005. 2001 mod8=1 (2001-8\\u00d7250=2001-2000=1), 2003=2001+2\\u21921+2=3 mod8, 2005=2001+4\\u21921+4=5 mod8. So last3 terms are1\\u00d73\\u00d75=15\\u22617 mod8. Therefore, total product\\u22611^250 \\u00d77\\u22617 mod8. Correct.\\n\\nTherefore, the logic holds. Therefore, the remainder is375. So I think that's the correct answer.\\n\\n**Final Answer**\\n\\\\boxed{375}\\n</think>To find the remainder when the product \\\\(1 \\\\times 3 \\\\times 5 \\\\times \\\\cdots \\\\times 2005\\\\) is divided by 1000, we use modular arithmetic and the Chinese Remainder Theorem (CRT).\\n\\n### Step 1: Calculate the product modulo 8\\n\\nThe sequence of odd numbers modulo 8 repeats every 4 terms: \\\\(1, 3, 5, 7\\\\). The product of each cycle is:\\n\\\\[\\n1 \\\\times 3 \\\\times 5 \\\\times 7 = 105 \\\\equiv 1 \\\\mod 8\\n\\\\]\\n\\nThere are 1003 terms in the product. Dividing 1003 by 4 gives 250 full cycles and a remainder of 3 terms. The remaining terms are 2001, 2003, and 2005. We calculate these modulo 8:\\n\\\\[\\n2001 \\\\equiv 1 \\\\mod 8, \\\\quad 2003 \\\\equiv 3 \\\\mod 8, \\\\quad 2005 \\\\equiv 5 \\\\mod 8\\n\\\\]\\nThe product of these remaining terms is:\\n\\\\[\\n1 \\\\times 3 \\\\times 5 = 15 \\\\equiv 7 \\\\mod 8\\n\\\\]\\n\\nThus, the product modulo 8 is:\\n\\\\[\\n1^{250} \\\\times 7 \\\\equiv 7 \\\\mod 8\\n\\\\]\\n\\n### Step 2: Calculate the product modulo 125\\n\\nWe need to determine the number of factors of 5 in the product. The sequence of odd numbers includes multiples of 5, 25, 125, and 625.\\n\\n- Multiples of 5: \\\\(5, 15, 25, \\\\ldots, 2005\\\\)\\n  - These are of the form \\\\(5 \\\\times (2k+1)\\\\) for \\\\(k = 0, 1, 2, \\\\ldots, 200\\\\)\\n  - Number of such terms: \\\\(\\\\frac{2005}{5} = 401\\\\), and half of these are odd, so \\\\(201\\\\) multiples of 5.\\n\\n- Multiples of 25: \\\\(25, 75, 125, \\\\ldots, 1975\\\\)\\n  - These are of the form \\\\(25 \\\\times (2k+1)\\\\) for \\\\(k = 0, 1, 2, \\\\ldots, 39\\\\)\\n  - Number of such terms: \\\\(\\\\frac{1975}{25} = 79\\\\), and half of these are odd, so \\\\(40\\\\) multiples of 25.\\n\\n- Multiples of 125: \\\\(125, 375, 625, 875, 1125, 1375, 1625, 1875\\\\)\\n  - These are of the form \\\\(125 \\\\times (2k+1)\\\\) for \\\\(k = 0, 1, 2, \\\\ldots, 15\\\\)\\n  - Number of such terms: \\\\(\\\\frac{1875}{125} = 15\\\\), and half of these are odd, so \\\\(8\\\\) multiples of 125.\\n\\n- Multiples of 625: \\\\(625, 1875\\\\)\\n  - These are of the form \\\\(625 \\\\times (2k+1)\\\\) for \\\\(k = 0, 1\\\\)\\n  - Number of such terms: \\\\(\\\\frac{1875}{625} = 3\\\\), and half of these are odd, so \\\\(2\\\\) multiples of 625.\\n\\nTotal factors of 5:\\n\\\\[\\n201 + 40 + 8 + 2 = 251\\n\\\\]\\n\\nSince \\\\(251 \\\\geq 3\\\\), the product is divisible by \\\\(5^3 = 125\\\\). Therefore, the product modulo 125 is:\\n\\\\[\\n0 \\\\mod 125\\n\\\\]\\n\\n### Step 3: Combine results using the Chinese Remainder Theorem\\n\\nWe have:\\n\\\\[\\nx \\\\equiv 7 \\\\mod 8\\n\\\\]\\n\\\\[\\nx \\\\equiv 0 \\\\mod 125\\n\\\\]\\n\\nLet \\\\(x = 125k\\\\). Then:\\n\\\\[\\n125k \\\\equiv 7 \\\\mod 8\\n\\\\]\\nSince \\\\(125 \\\\equiv 5 \\\\mod 8\\\\), we have:\\n\\\\[\\n5k \\\\equiv 7 \\\\mod 8\\n\\\\]\\n\\nThe multiplicative inverse of 5 modulo 8 is 5, so:\\n\\\\[\\nk \\\\equiv 7 \\\\times 5 \\\\equiv 35 \\\\equiv 3 \\\\mod 8\\n\\\\]\\n\\nThus, \\\\(k = 8m + 3\\\\) for some integer \\\\(m\\\\). Therefore:\\n\\\\[\\nx = 125(8m + 3) = 1000m + 375\\n\\\\]\\n\\nThe smallest non-negative solution is:\\n\\\\[\\nx = 375\\n\\\\]\\n\\nTherefore, the remainder when the product is divided by 1000 is:\\n\\\\[\\n\\\\boxed{375}\\n\\\\]\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
       "type": "dataframe",
       "variable_name": "dataset"
      },
      "text/html": [
       "\n",
       "  <div id=\"df-96e32541-ea2f-4d7b-a1a6-53c187dd6610\" class=\"colab-df-container\">\n",
       "    <div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>expected_answer</th>\n",
       "      <th>problem</th>\n",
       "      <th>generated_solution</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>14</td>\n",
       "      <td>Given $\\sqrt{x^2+165}-\\sqrt{x^2-52}=7$ and $x$...</td>\n",
       "      <td>&lt;think&gt;\\nOkay, let's see. I need to solve the ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>-2</td>\n",
       "      <td>Find the value of the parameter $a$ for which ...</td>\n",
       "      <td>&lt;think&gt;\\nOkay, so I need to find the value of ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>18</td>\n",
       "      <td>What is the sum of all real numbers $x$ for wh...</td>\n",
       "      <td>&lt;think&gt;\\nOkay, so I need to solve the equation...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>2</td>\n",
       "      <td>Evaluate the sum \\(\\sum_{n=1}^\\infty \\frac{\\ph...</td>\n",
       "      <td>&lt;think&gt;\\nOkay, so I need to evaluate the infin...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>30</td>\n",
       "      <td>What is the largest positive integer that divi...</td>\n",
       "      <td>&lt;think&gt;\\nAlright, so I need to find the larges...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19243</th>\n",
       "      <td>244</td>\n",
       "      <td>Let \\( p \\), \\( q \\), and \\( r \\) be the disti...</td>\n",
       "      <td>&lt;think&gt;\\nOkay, so I need to find the value of ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19245</th>\n",
       "      <td>1</td>\n",
       "      <td>A bug is on the $0$ of a number line. At any p...</td>\n",
       "      <td>&lt;think&gt;\\nOkay, so I have this problem where a ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19247</th>\n",
       "      <td>4</td>\n",
       "      <td>A bus left point X for point Y. Two hours late...</td>\n",
       "      <td>&lt;think&gt;\\nOkay, let's tackle this problem step ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19248</th>\n",
       "      <td>18</td>\n",
       "      <td>Each interior angle of a regular n-gon measure...</td>\n",
       "      <td>&lt;think&gt;\\nOkay, let's see. I need to find the n...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19250</th>\n",
       "      <td>0.8960</td>\n",
       "      <td>Find the probability that the second blue resu...</td>\n",
       "      <td>&lt;think&gt;\\nOkay, so I need to find the probabili...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>7507 rows \u00d7 3 columns</p>\n",
       "</div>\n",
       "    <div class=\"colab-df-buttons\">\n",
       "\n",
       "  <div class=\"colab-df-container\">\n",
       "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-96e32541-ea2f-4d7b-a1a6-53c187dd6610')\"\n",
       "            title=\"Convert this dataframe to an interactive table.\"\n",
       "            style=\"display:none;\">\n",
       "\n",
       "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
       "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
       "  </svg>\n",
       "    </button>\n",
       "\n",
       "  <style>\n",
       "    .colab-df-container {\n",
       "      display:flex;\n",
       "      gap: 12px;\n",
       "    }\n",
       "\n",
       "    .colab-df-convert {\n",
       "      background-color: #E8F0FE;\n",
       "      border: none;\n",
       "      border-radius: 50%;\n",
       "      cursor: pointer;\n",
       "      display: none;\n",
       "      fill: #1967D2;\n",
       "      height: 32px;\n",
       "      padding: 0 0 0 0;\n",
       "      width: 32px;\n",
       "    }\n",
       "\n",
       "    .colab-df-convert:hover {\n",
       "      background-color: #E2EBFA;\n",
       "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
       "      fill: #174EA6;\n",
       "    }\n",
       "\n",
       "    .colab-df-buttons div {\n",
       "      margin-bottom: 4px;\n",
       "    }\n",
       "\n",
       "    [theme=dark] .colab-df-convert {\n",
       "      background-color: #3B4455;\n",
       "      fill: #D2E3FC;\n",
       "    }\n",
       "\n",
       "    [theme=dark] .colab-df-convert:hover {\n",
       "      background-color: #434B5C;\n",
       "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
       "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
       "      fill: #FFFFFF;\n",
       "    }\n",
       "  </style>\n",
       "\n",
       "    <script>\n",
       "      const buttonEl =\n",
       "        document.querySelector('#df-96e32541-ea2f-4d7b-a1a6-53c187dd6610 button.colab-df-convert');\n",
       "      buttonEl.style.display =\n",
       "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
       "\n",
       "      async function convertToInteractive(key) {\n",
       "        const element = document.querySelector('#df-96e32541-ea2f-4d7b-a1a6-53c187dd6610');\n",
       "        const dataTable =\n",
       "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
       "                                                    [key], {});\n",
       "        if (!dataTable) return;\n",
       "\n",
       "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
       "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
       "          + ' to learn more about interactive tables.';\n",
       "        element.innerHTML = '';\n",
       "        dataTable['output_type'] = 'display_data';\n",
       "        await google.colab.output.renderOutput(dataTable, element);\n",
       "        const docLink = document.createElement('div');\n",
       "        docLink.innerHTML = docLinkHtml;\n",
       "        element.appendChild(docLink);\n",
       "      }\n",
       "    </script>\n",
       "  </div>\n",
       "\n",
       "\n",
       "    <div id=\"df-c0e57cf5-8aca-4780-8779-d70534eec615\">\n",
       "      <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-c0e57cf5-8aca-4780-8779-d70534eec615')\"\n",
       "                title=\"Suggest charts\"\n",
       "                style=\"display:none;\">\n",
       "\n",
       "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
       "     width=\"24px\">\n",
       "    <g>\n",
       "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
       "    </g>\n",
       "</svg>\n",
       "      </button>\n",
       "\n",
       "<style>\n",
       "  .colab-df-quickchart {\n",
       "      --bg-color: #E8F0FE;\n",
       "      --fill-color: #1967D2;\n",
       "      --hover-bg-color: #E2EBFA;\n",
       "      --hover-fill-color: #174EA6;\n",
       "      --disabled-fill-color: #AAA;\n",
       "      --disabled-bg-color: #DDD;\n",
       "  }\n",
       "\n",
       "  [theme=dark] .colab-df-quickchart {\n",
       "      --bg-color: #3B4455;\n",
       "      --fill-color: #D2E3FC;\n",
       "      --hover-bg-color: #434B5C;\n",
       "      --hover-fill-color: #FFFFFF;\n",
       "      --disabled-bg-color: #3B4455;\n",
       "      --disabled-fill-color: #666;\n",
       "  }\n",
       "\n",
       "  .colab-df-quickchart {\n",
       "    background-color: var(--bg-color);\n",
       "    border: none;\n",
       "    border-radius: 50%;\n",
       "    cursor: pointer;\n",
       "    display: none;\n",
       "    fill: var(--fill-color);\n",
       "    height: 32px;\n",
       "    padding: 0;\n",
       "    width: 32px;\n",
       "  }\n",
       "\n",
       "  .colab-df-quickchart:hover {\n",
       "    background-color: var(--hover-bg-color);\n",
       "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
       "    fill: var(--button-hover-fill-color);\n",
       "  }\n",
       "\n",
       "  .colab-df-quickchart-complete:disabled,\n",
       "  .colab-df-quickchart-complete:disabled:hover {\n",
       "    background-color: var(--disabled-bg-color);\n",
       "    fill: var(--disabled-fill-color);\n",
       "    box-shadow: none;\n",
       "  }\n",
       "\n",
       "  .colab-df-spinner {\n",
       "    border: 2px solid var(--fill-color);\n",
       "    border-color: transparent;\n",
       "    border-bottom-color: var(--fill-color);\n",
       "    animation:\n",
       "      spin 1s steps(1) infinite;\n",
       "  }\n",
       "\n",
       "  @keyframes spin {\n",
       "    0% {\n",
       "      border-color: transparent;\n",
       "      border-bottom-color: var(--fill-color);\n",
       "      border-left-color: var(--fill-color);\n",
       "    }\n",
       "    20% {\n",
       "      border-color: transparent;\n",
       "      border-left-color: var(--fill-color);\n",
       "      border-top-color: var(--fill-color);\n",
       "    }\n",
       "    30% {\n",
       "      border-color: transparent;\n",
       "      border-left-color: var(--fill-color);\n",
       "      border-top-color: var(--fill-color);\n",
       "      border-right-color: var(--fill-color);\n",
       "    }\n",
       "    40% {\n",
       "      border-color: transparent;\n",
       "      border-right-color: var(--fill-color);\n",
       "      border-top-color: var(--fill-color);\n",
       "    }\n",
       "    60% {\n",
       "      border-color: transparent;\n",
       "      border-right-color: var(--fill-color);\n",
       "    }\n",
       "    80% {\n",
       "      border-color: transparent;\n",
       "      border-right-color: var(--fill-color);\n",
       "      border-bottom-color: var(--fill-color);\n",
       "    }\n",
       "    90% {\n",
       "      border-color: transparent;\n",
       "      border-bottom-color: var(--fill-color);\n",
       "    }\n",
       "  }\n",
       "</style>\n",
       "\n",
       "      <script>\n",
       "        async function quickchart(key) {\n",
       "          const quickchartButtonEl =\n",
       "            document.querySelector('#' + key + ' button');\n",
       "          quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
       "          quickchartButtonEl.classList.add('colab-df-spinner');\n",
       "          try {\n",
       "            const charts = await google.colab.kernel.invokeFunction(\n",
       "                'suggestCharts', [key], {});\n",
       "          } catch (error) {\n",
       "            console.error('Error during call to suggestCharts:', error);\n",
       "          }\n",
       "          quickchartButtonEl.classList.remove('colab-df-spinner');\n",
       "          quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
       "        }\n",
       "        (() => {\n",
       "          let quickchartButtonEl =\n",
       "            document.querySelector('#df-c0e57cf5-8aca-4780-8779-d70534eec615 button');\n",
       "          quickchartButtonEl.style.display =\n",
       "            google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
       "        })();\n",
       "      </script>\n",
       "    </div>\n",
       "\n",
       "  <div id=\"id_4379440e-e42f-483b-a473-94ebce93e1e9\">\n",
       "    <style>\n",
       "      .colab-df-generate {\n",
       "        background-color: #E8F0FE;\n",
       "        border: none;\n",
       "        border-radius: 50%;\n",
       "        cursor: pointer;\n",
       "        display: none;\n",
       "        fill: #1967D2;\n",
       "        height: 32px;\n",
       "        padding: 0 0 0 0;\n",
       "        width: 32px;\n",
       "      }\n",
       "\n",
       "      .colab-df-generate:hover {\n",
       "        background-color: #E2EBFA;\n",
       "        box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
       "        fill: #174EA6;\n",
       "      }\n",
       "\n",
       "      [theme=dark] .colab-df-generate {\n",
       "        background-color: #3B4455;\n",
       "        fill: #D2E3FC;\n",
       "      }\n",
       "\n",
       "      [theme=dark] .colab-df-generate:hover {\n",
       "        background-color: #434B5C;\n",
       "        box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
       "        filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
       "        fill: #FFFFFF;\n",
       "      }\n",
       "    </style>\n",
       "    <button class=\"colab-df-generate\" onclick=\"generateWithVariable('dataset')\"\n",
       "            title=\"Generate code using this dataframe.\"\n",
       "            style=\"display:none;\">\n",
       "\n",
       "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
       "       width=\"24px\">\n",
       "    <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
       "  </svg>\n",
       "    </button>\n",
       "    <script>\n",
       "      (() => {\n",
       "      const buttonEl =\n",
       "        document.querySelector('#id_4379440e-e42f-483b-a473-94ebce93e1e9 button.colab-df-generate');\n",
       "      buttonEl.style.display =\n",
       "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
       "\n",
       "      buttonEl.onclick = () => {\n",
       "        google.colab.notebook.generateWithVariable('dataset');\n",
       "      }\n",
       "      })();\n",
       "    </script>\n",
       "  </div>\n",
       "\n",
       "    </div>\n",
       "  </div>\n"
      ],
      "text/plain": [
       "      expected_answer                                            problem  \\\n",
       "0                  14  Given $\\sqrt{x^2+165}-\\sqrt{x^2-52}=7$ and $x$...   \n",
       "6                  -2  Find the value of the parameter $a$ for which ...   \n",
       "9                  18  What is the sum of all real numbers $x$ for wh...   \n",
       "13                  2  Evaluate the sum \\(\\sum_{n=1}^\\infty \\frac{\\ph...   \n",
       "17                 30  What is the largest positive integer that divi...   \n",
       "...               ...                                                ...   \n",
       "19243             244  Let \\( p \\), \\( q \\), and \\( r \\) be the disti...   \n",
       "19245               1  A bug is on the $0$ of a number line. At any p...   \n",
       "19247               4  A bus left point X for point Y. Two hours late...   \n",
       "19248              18  Each interior angle of a regular n-gon measure...   \n",
       "19250          0.8960  Find the probability that the second blue resu...   \n",
       "\n",
       "                                      generated_solution  \n",
       "0      <think>\\nOkay, let's see. I need to solve the ...  \n",
       "6      <think>\\nOkay, so I need to find the value of ...  \n",
       "9      <think>\\nOkay, so I need to solve the equation...  \n",
       "13     <think>\\nOkay, so I need to evaluate the infin...  \n",
       "17     <think>\\nAlright, so I need to find the larges...  \n",
       "...                                                  ...  \n",
       "19243  <think>\\nOkay, so I need to find the value of ...  \n",
       "19245  <think>\\nOkay, so I have this problem where a ...  \n",
       "19247  <think>\\nOkay, let's tackle this problem step ...  \n",
       "19248  <think>\\nOkay, let's see. I need to find the n...  \n",
       "19250  <think>\\nOkay, so I need to find the probabili...  \n",
       "\n",
       "[7507 rows x 3 columns]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from datasets import load_dataset\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "dataset = load_dataset(\"unsloth/OpenMathReasoning-mini\", split = \"cot\")\n",
    "dataset = dataset.to_pandas()[\n",
    "    [\"expected_answer\", \"problem\", \"generated_solution\"]\n",
    "]\n",
    "\n",
    "# Try converting to number - if not, replace with NaN\n",
    "is_number = pd.to_numeric(pd.Series(dataset[\"expected_answer\"]), errors = \"coerce\").notnull()\n",
    "# Select only numbers\n",
    "dataset = dataset.iloc[np.where(is_number)[0]]\n",
    "\n",
    "dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "JVRFqoSdIEVK"
   },
   "source": [
    "We have to format the dataset to follow our GRPO style formatting:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "Z9ydcV_Abfi6"
   },
   "outputs": [],
   "source": [
    "def format_dataset(x):\n",
    "    expected_answer = x[\"expected_answer\"]\n",
    "    problem = x[\"problem\"]\n",
    "\n",
    "    # Remove generated <think> and </think>\n",
    "    thoughts = x[\"generated_solution\"]\n",
    "    thoughts = thoughts.replace(\"<think>\", \"\").replace(\"</think>\", \"\")\n",
    "\n",
    "    # Strip newlines on left and right\n",
    "    thoughts = thoughts.strip()\n",
    "    # Add our custom formatting\n",
    "    final_prompt = \\\n",
    "        reasoning_start + thoughts + reasoning_end + \\\n",
    "        solution_start + expected_answer + solution_end\n",
    "    return [\n",
    "        {\"role\" : \"system\",    \"content\" : system_prompt},\n",
    "        {\"role\" : \"user\",      \"content\" : problem},\n",
    "        {\"role\" : \"assistant\", \"content\" : final_prompt},\n",
    "    ]\n",
    "\n",
    "dataset[\"Messages\"] = dataset.apply(format_dataset, axis = 1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "X5NI47rOIRP2"
   },
   "source": [
    "Check to see if it worked:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 140
    },
    "id": "LTdXBKcslhRH",
    "outputId": "d5a5797b-b2c9-4afd-9650-4f88ffa30a3b"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.google.colaboratory.intrinsic+json": {
       "type": "string"
      },
      "text/plain": [
       "\"You are given a problem.\\nThink about the problem and provide your working out.\\nPlace it between <start_working_out> and <end_working_out>.\\nThen, provide your solution between <SOLUTION></SOLUTION><|im_end|>Given $\\\\sqrt{x^2+165}-\\\\sqrt{x^2-52}=7$ and $x$ is positive, find all possible values of $x$.<start_working_out>Okay, let's see. I need to solve the equation \u221a(x\u00b2 + 165) - \u221a(x\u00b2 - 52) = 7, and find all positive values of x. Hmm, radicals can be tricky, but maybe if I can eliminate the square roots by squaring both sides. Let me try that.\\n\\nFirst, let me write down the equation again to make sure I have it right:\\n\\n\u221a(x\u00b2 + 165) - \u221a(x\u00b2 - 52) = 7.\\n\\nOkay, so the idea is to isolate one of the radicals and then square both sides. Let me try moving the second radical to the other side:\\n\\n\u221a(x\u00b2 + 165) = 7 + \u221a(x\u00b2 - 52).\\n\\nNow, if I square both sides, maybe I can get rid of the square roots. Let's do that:\\n\\n(\u221a(x\u00b2 + 165))\u00b2 = (7 + \u221a(x\u00b2 - 52))\u00b2.\\n\\nSimplifying the left side:\\n\\nx\u00b2 + 165 = 49 + 14\u221a(x\u00b2 - 52) + (\u221a(x\u00b2 - 52))\u00b2.\\n\\nThe right side is expanded using the formula (a + b)\u00b2 = a\u00b2 + 2ab + b\u00b2. So the right side becomes 7\u00b2 + 2*7*\u221a(x\u00b2 - 52) + (\u221a(x\u00b2 - 52))\u00b2, which is 49 + 14\u221a(x\u00b2 - 52) + (x\u00b2 - 52).\\n\\nSo putting it all together:\\n\\nx\u00b2 + 165 = 49 + 14\u221a(x\u00b2 - 52) + x\u00b2 - 52.\\n\\nHmm, let's simplify the right side. The x\u00b2 terms will cancel out, right? Let's subtract x\u00b2 from both sides:\\n\\n165 = 49 + 14\u221a(x\u00b2 - 52) - 52.\\n\\nSimplify the constants on the right:\\n\\n49 - 52 is -3, so:\\n\\n165 = -3 + 14\u221a(x\u00b2 - 52).\\n\\nNow, add 3 to both sides to isolate the radical term:\\n\\n165 + 3 = 14\u221a(x\u00b2 - 52).\\n\\nSo 168 = 14\u221a(x\u00b2 - 52).\\n\\nDivide both sides by 14:\\n\\n168 / 14 = \u221a(x\u00b2 - 52).\\n\\n12 = \u221a(x\u00b2 - 52).\\n\\nNow, square both sides again to eliminate the square root:\\n\\n12\u00b2 = x\u00b2 - 52.\\n\\n144 = x\u00b2 - 52.\\n\\nAdd 52 to both sides:\\n\\n144 + 52 = x\u00b2.\\n\\n196 = x\u00b2.\\n\\nSo x = \u221a196 = 14.\\n\\nBut wait, since the problem states that x is positive, we only take the positive root. So x = 14.\\n\\nBut hold on, when dealing with squaring equations, sometimes extraneous solutions can come up. I should check if this solution actually satisfies the original equation.\\n\\nLet's plug x = 14 back into the original equation:\\n\\n\u221a(14\u00b2 + 165) - \u221a(14\u00b2 - 52) = ?\\n\\nCalculate each term:\\n\\n14\u00b2 is 196.\\n\\nSo first radical: \u221a(196 + 165) = \u221a361 = 19.\\n\\nSecond radical: \u221a(196 - 52) = \u221a144 = 12.\\n\\nSo 19 - 12 = 7, which is exactly the right-hand side. So yes, it checks out.\\n\\nTherefore, the only solution is x = 14. Since the problem says x is positive, we don't have to consider negative roots. So I think that's the answer.\\nTo solve the equation \\\\(\\\\sqrt{x^2 + 165} - \\\\sqrt{x^2 - 52} = 7\\\\) for positive \\\\(x\\\\), we proceed as follows:\\n\\n1. Start with the given equation:\\n   \\\\[\\n   \\\\sqrt{x^2 + 165} - \\\\sqrt{x^2 - 52} = 7\\n   \\\\]\\n\\n2. Isolate one of the square roots by moving \\\\(\\\\sqrt{x^2 - 52}\\\\) to the right side:\\n   \\\\[\\n   \\\\sqrt{x^2 + 165} = 7 + \\\\sqrt{x^2 - 52}\\n   \\\\]\\n\\n3. Square both sides to eliminate the square root on the left:\\n   \\\\[\\n   (\\\\sqrt{x^2 + 165})^2 = (7 + \\\\sqrt{x^2 - 52})^2\\n   \\\\]\\n   Simplifying both sides, we get:\\n   \\\\[\\n   x^2 + 165 = 49 + 14\\\\sqrt{x^2 - 52} + (x^2 - 52)\\n   \\\\]\\n\\n4. Combine like terms on the right side:\\n   \\\\[\\n   x^2 + 165 = x^2 - 52 + 49 + 14\\\\sqrt{x^2 - 52}\\n   \\\\]\\n   Simplifying further:\\n   \\\\[\\n   x^2 + 165 = x^2 - 3 + 14\\\\sqrt{x^2 - 52}\\n   \\\\]\\n\\n5. Subtract \\\\(x^2\\\\) from both sides:\\n   \\\\[\\n   165 = -3 + 14\\\\sqrt{x^2 - 52}\\n   \\\\]\\n\\n6. Add 3 to both sides to isolate the term with the square root:\\n   \\\\[\\n   168 = 14\\\\sqrt{x^2 - 52}\\n   \\\\]\\n\\n7. Divide both sides by 14:\\n   \\\\[\\n   12 = \\\\sqrt{x^2 - 52}\\n   \\\\]\\n\\n8. Square both sides again to eliminate the square root:\\n   \\\\[\\n   12^2 = x^2 - 52\\n   \\\\]\\n   Simplifying:\\n   \\\\[\\n   144 = x^2 - 52\\n   \\\\]\\n\\n9. Add 52 to both sides to solve for \\\\(x^2\\\\):\\n   \\\\[\\n   196 = x^2\\n   \\\\]\\n\\n10. Take the positive square root (since \\\\(x\\\\) is positive):\\n    \\\\[\\n    x = \\\\sqrt{196} = 14\\n    \\\\]\\n\\n11. Verify the solution by substituting \\\\(x = 14\\\\) back into the original equation:\\n    \\\\[\\n    \\\\sqrt{14^2 + 165} - \\\\sqrt{14^2 - 52} = \\\\sqrt{196 + 165} - \\\\sqrt{196 - 52} = \\\\sqrt{361} - \\\\sqrt{144} = 19 - 12 = 7\\n    \\\\]\\n    The solution checks out.\\n\\nThus, the only positive solution is:\\n\\\\[\\n\\\\boxed{14}\\n\\\\]<end_working_out><SOLUTION>14</SOLUTION><|im_end|>\""
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tokenizer.apply_chat_template(dataset[\"Messages\"][0], tokenize = False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "iHV9BXYiIYaq"
   },
   "source": [
    "Let's truncate the pre fine-tuning dataset to `max_seq_length/2` since we don't want too long reasoning traces.\n",
    "\n",
    "Note this might take 2 minutes!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "MBHFlRbae9_s",
    "outputId": "04608317-e3b9-4e20-d86c-3932fefdb951"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(59, 5)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataset[\"N\"] = dataset[\"Messages\"].apply(lambda x: len(tokenizer.apply_chat_template(x)))\n",
    "\n",
    "dataset = dataset.loc[dataset[\"N\"] <= max_seq_length/2].copy()\n",
    "dataset.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "E6NkUCAGIj8N"
   },
   "source": [
    "We then tokenize the messages and convert it to a Hugging Face compatible dataset format:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "3rgdtiV_f5hx",
    "outputId": "94b8d495-e6d8-4aa9-d8ec-0080d8b967d6"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Dataset({\n",
       "    features: ['expected_answer', 'problem', 'generated_solution', 'Messages', 'N', 'text', '__index_level_0__'],\n",
       "    num_rows: 59\n",
       "})"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from datasets import Dataset\n",
    "\n",
    "dataset[\"text\"] = tokenizer.apply_chat_template(dataset[\"Messages\"].values.tolist(), tokenize = False)\n",
    "dataset = Dataset.from_pandas(dataset)\n",
    "dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "bAQJjQrYKzOk"
   },
   "source": [
    "Let's now pre fine-tune the model so it follows our custom GRPO formatting!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 49,
     "referenced_widgets": [
      "c4fdf92f9b1a47949eaae1faf37143f7",
      "0e77c1d28f77453d96c25f4949cd7dfe",
      "f82e959c7e464c16a4d2fa3da7166ef2",
      "a77b813865c6419eaba1f2e0a4327a33",
      "7602cd142f994e9a8fad3d5b01ec20e0",
      "211b0af26dad41b290942ceb40bea14f",
      "2730f80d1c8940abbedd3be2d2d85bce",
      "7c9d7a3d74a041e79772ba8096dadc7c",
      "37300ec212064b15a18d114087463bf1",
      "9e2315dfa4d9420ba8d072f285bfd6a7",
      "28c2570fd57843e0a966e6f07a89925d"
     ]
    },
    "id": "woYi0SSygpqp",
    "outputId": "ffce7233-8c45-454a-e152-a019215a63bc"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "c4fdf92f9b1a47949eaae1faf37143f7",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Unsloth: Tokenizing [\"text\"] (num_proc=16):   0%|          | 0/59 [00:00<?, ? examples/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model.vllm_engine.sleep() # Must call sleep before training to free VRAM!\n",
    "from trl import SFTTrainer, SFTConfig\n",
    "trainer = SFTTrainer(\n",
    "    model = model,\n",
    "    tokenizer = tokenizer,\n",
    "    train_dataset = dataset,\n",
    "    args = SFTConfig(\n",
    "        dataset_text_field = \"text\",\n",
    "        per_device_train_batch_size = 2,\n",
    "        gradient_accumulation_steps = 2, # Use GA to mimic batch size!\n",
    "        warmup_steps = 10,\n",
    "        # num_train_epochs = 1, # Set this for 1 full training run.\n",
    "        max_steps=100,\n",
    "        learning_rate = 2e-4, # Reduce to 2e-5 for long training runs\n",
    "        logging_steps = 5,\n",
    "        optim = \"adamw_8bit\",\n",
    "        weight_decay = 0.01,\n",
    "        lr_scheduler_type = \"linear\",\n",
    "        seed = 3407,\n",
    "        report_to = \"none\", # Use this for WandB etc\n",
    "    ),\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 844
    },
    "id": "1JHECEwE6XYk",
    "outputId": "16d8ea13-f470-41eb-83b3-378a1fb7b2ff"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "==((====))==  Unsloth - 2x faster free finetuning | Num GPUs used = 1\n",
      "   \\\\   /|    Num examples = 59 | Num Epochs = 7 | Total steps = 100\n",
      "O^O/ \\_/ \\    Batch size per device = 2 | Gradient accumulation steps = 2\n",
      "\\        /    Data Parallel GPUs = 1 | Total batch size (2 x 2 x 1) = 4\n",
      " \"-____-\"     Trainable parameters = 87,293,952 of 8,278,453,248 (1.05% trained)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Unsloth: Will smartly offload gradients to save VRAM!\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      \n",
       "      <progress value='100' max='100' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      [100/100 08:29, Epoch 6/7]\n",
       "    </div>\n",
       "    <table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       " <tr style=\"text-align: left;\">\n",
       "      <th>Step</th>\n",
       "      <th>Training Loss</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>0.754100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>0.591900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>0.433900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>20</td>\n",
       "      <td>0.340100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>25</td>\n",
       "      <td>0.292200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>30</td>\n",
       "      <td>0.313000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>35</td>\n",
       "      <td>0.229700</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>40</td>\n",
       "      <td>0.241300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>45</td>\n",
       "      <td>0.227100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>50</td>\n",
       "      <td>0.174200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>55</td>\n",
       "      <td>0.169100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>60</td>\n",
       "      <td>0.148100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>65</td>\n",
       "      <td>0.127100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>70</td>\n",
       "      <td>0.121100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>75</td>\n",
       "      <td>0.100900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>80</td>\n",
       "      <td>0.090100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>85</td>\n",
       "      <td>0.083300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>90</td>\n",
       "      <td>0.097400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>95</td>\n",
       "      <td>0.086100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>100</td>\n",
       "      <td>0.065600</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table><p>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "TrainOutput(global_step=100, training_loss=0.23431239724159242, metrics={'train_runtime': 592.8316, 'train_samples_per_second': 0.675, 'train_steps_per_second': 0.169, 'total_flos': 1.7375572038144e+16, 'train_loss': 0.23431239724159242, 'epoch': 6.666666666666667})"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trainer.train()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "DRMBNUBgLC8T"
   },
   "source": [
    "Let's check if the model has learnt to follow the custom format:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "0jdu99rRnUq1"
   },
   "outputs": [],
   "source": [
    "import gc\n",
    "for _ in range(5):\n",
    "    torch.cuda.empty_cache()\n",
    "    gc.collect()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "9HJxrS76h3Ds",
    "outputId": "5f049ae8-44ec-4490-b464-9a6070ca102e"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "You are given a problem.\n",
      "Think about the problem and provide your working out.\n",
      "Place it between <start_working_out> and <end_working_out>.\n",
      "Then, provide your solution between <SOLUTION></SOLUTION><|im_end|>Jenifer has 82 cents in pennies and nickels. Her younger brother mistook all her nickels for dimes and counted the total as $1.47. How many pennies does Jenifer have?<start_working_out>Okay, let's try to figure out how many pennies Jenifer has. So, the problem says she has 82 cents in pennies and nickels. But when her younger brother counted them, thinking the nickels were dimes, he got $1.47. Hmm, need to find the number of pennies.\n",
      "\n",
      "First, let me note down the given information. Let me denote the number of pennies as P and the number of nickels as N. Since pennies are worth 1 cent each and nickels 5 cents, the total value Jenifer has is 1*P + 5*N = 82 cents. That's the first equation.\n",
      "\n",
      "Now, the brother thought the nickels were dimes. So, he counted the pennies as 1 cent each and nickels as 10 cents each. The total he got was $1.47, which is 147 cents. So, the second equation would be P + 10*N = 147.\n",
      "\n",
      "So now I have two equations:\n",
      "\n",
      "1) P + 5N = 82\n",
      "2) P + 10N = 147\n",
      "\n",
      "I need to solve these two equations to find P\n"
     ]
    }
   ],
   "source": [
    "text = tokenizer.apply_chat_template(\n",
    "    dataset[0][\"Messages\"][:2],\n",
    "    tokenize = False,\n",
    "    add_generation_prompt = True, # Must add for generation\n",
    ")\n",
    "\n",
    "from transformers import TextStreamer\n",
    "_ = model.generate(\n",
    "    **tokenizer(text, return_tensors = \"pt\").to(\"cuda\"),\n",
    "    temperature = 1,\n",
    "    max_new_tokens = 256,\n",
    "    streamer = TextStreamer(tokenizer, skip_prompt = False),\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 99,
     "referenced_widgets": [
      "59e21058d73446c0bd04503af2f46c45",
      "6adc0ec79e17407f984c9fa1d2d8e94d",
      "3bb8e8fc098e463a9c301b20b898cd58",
      "07e2cdfc39a34101a6a0cd1327e0cd9a",
      "c1217248af6d4093899cb002b35b3a1c",
      "eb522d609c87468489ab4dddeae0aec5",
      "8fe5ded236594408bec5935e0c765187",
      "5a4366868bb24a9c98b88cc8945dffcf",
      "9953ef55859c48d8bd52782b0dd9a060",
      "6b742b1a6bd14efda6e25793897aa011",
      "3447aa9ea02347d6a8723dc38c87788b",
      "3b501b597c2c4de9a4c0fb76148f49b6",
      "28726c10a16f46cea5b9d87ff44a0a22",
      "6d034aa6d2e1416ea79a232897d7bac6",
      "032e9f8e346e4dcf91730922fea6d042",
      "929910c392b44bca89d4c22c82dda455",
      "4108cd7a930441899ad61c8ff4ef13a1",
      "5842d458b43c49c1899ac88fba5ffded",
      "fe11aa6ba91a47a6bb2bf08b75c5d09d",
      "3a8f05b84e174a069f3bdedf401ba8e0",
      "b7923fb3e4044a74a06d820350752fcb",
      "116476e245f34842ab6819a630d03778"
     ]
    },
    "id": "JKXELGb7lL2H",
    "outputId": "03b3323e-174d-40c4-8707-34de72622f9b"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "59e21058d73446c0bd04503af2f46c45",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Adding requests:   0%|          | 0/1 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "3b501b597c2c4de9a4c0fb76148f49b6",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Processed prompts:   0%|          | 0/1 [00:00<?, ?it/s, est. speed input: 0.00 toks/s, output: 0.00 toks/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.google.colaboratory.intrinsic+json": {
       "type": "string"
      },
      "text/plain": [
       "''"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text = \"What is the sqrt of 101?\"\n",
    "\n",
    "from vllm import SamplingParams\n",
    "sampling_params = SamplingParams(\n",
    "    temperature = 1.0,\n",
    "    top_k = 50,\n",
    "    max_tokens = 256,\n",
    ")\n",
    "output = model.fast_generate(\n",
    "    [text],\n",
    "    sampling_params = sampling_params,\n",
    "    lora_request = None,\n",
    ")[0].outputs[0].text\n",
    "\n",
    "output"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "AtZ3qGOALF95"
   },
   "source": [
    "Yes it did follow the formatting! Great! Let's remove some items before the GRPO step"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "YWSZ0DET7bob",
    "outputId": "6c4c55cb-3647-4342-d77a-a964ce7e02c8"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "29"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "del dataset\n",
    "torch.cuda.empty_cache()\n",
    "import gc\n",
    "gc.collect()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "7KGgPgk_5S8r"
   },
   "source": [
    "### Data Prep\n",
    "<a name=\"Data\"></a>\n",
    "\n",
    "We're using Hugging Face's [Open R1 Math dataset](https://huggingface.co/datasets/open-r1/DAPO-Math-17k-Processed). You can also utilize OpenAI's famous [GSM8K dataset](https://huggingface.co/datasets/openai/gsm8k)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 182,
     "referenced_widgets": [
      "0e4383e6ffa043e69372e0b29b09cb0f",
      "04847addaf51446a98fc816f12a08e0a",
      "0bc6566651924fbfbfd8a5d0fc8a9058",
      "817a3da36e7a4f0dab366bba5fef53ad",
      "7098119670da4ed2b550806e2b6fb072",
      "ba229e3ea26d46d68efac1b609f3539a",
      "7dc1ebe4edfa4e7fbcbac8c78627af0a",
      "325e588bc1bb4b34b43f9d0687a7e883",
      "761ccde35b3943fa941c3e94d8e660b3",
      "afc5e0fb73d04efab499f33a65aad4e0",
      "832082b492b642e7bc76201e1a141cbc",
      "0ecb52dfc8d240fd9807086f69121746",
      "b46c12bbafb44ce88ca5c27bde31051c",
      "85d2e53c66f148c2ac4737c2d59314bb",
      "3ae9aa010f3b4a93a03e662aa8fd1b58",
      "51f1068264e349efaccb3bad0ea7c0e2",
      "10e1e42262074d2e998864f1a80e29cf",
      "d705df97d8ca44ceaa733d4a019e0c53",
      "47bf2e898cb44ea199598331a9927732",
      "1beb350a843f46bcb4b2549a08c25c83",
      "0836e2d428a64789b990ed49dc18db0c",
      "bdc85971a8d448ff9c3ee8e3418ee12e",
      "358ab4da5b8743419000f2d47af66e8a",
      "a8d9cf3a1af44e2bb75bf0fbab8ac94a",
      "c9a327c4c91e4fc8938ea087ad8d81f8",
      "c2e62aef170143048ee34f4f9064df36",
      "41741af320f44c048653b0d9ad7559a3",
      "9375f88038974c6f8f09cbe01a346f43",
      "b5010371a382465696c372a9b7f71a75",
      "8e5005527c6b4fb98bf3181f3dbc7062",
      "a67476271ecd453fb2db65a6566b73a1",
      "3c7c3468e306426da443501133a5ae86",
      "6b537d4bd211410e9866035f4f66bde2"
     ]
    },
    "id": "o7-eUrQn-OzE",
    "outputId": "02b6a599-21ea-430a-ee1e-020db5956534"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "0e4383e6ffa043e69372e0b29b09cb0f",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "README.md: 0.00B [00:00, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "0ecb52dfc8d240fd9807086f69121746",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "en/train-00000-of-00001.parquet:   0%|          | 0.00/5.23M [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "358ab4da5b8743419000f2d47af66e8a",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Generating train split:   0%|          | 0/14116 [00:00<?, ? examples/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "Dataset({\n",
       "    features: ['prompt', 'solution', 'data_source', 'source_prompt', 'ability', 'reward_model', 'extra_info'],\n",
       "    num_rows: 14116\n",
       "})"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from datasets import load_dataset\n",
    "dataset = load_dataset(\"open-r1/DAPO-Math-17k-Processed\", \"en\", split = \"train\")\n",
    "dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "3b00gUsS-ROW"
   },
   "source": [
    "Let's look at the first row:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 70
    },
    "id": "siopxjG8-ReF",
    "outputId": "b4abfefb-f8b1-42ae-fcb5-4f41101ef06b"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.google.colaboratory.intrinsic+json": {
       "type": "string"
      },
      "text/plain": [
       "'In triangle $ABC$, $\\\\sin \\\\angle A = \\\\frac{4}{5}$ and $\\\\angle A < 90^\\\\circ$. Let $D$ be a point outside triangle $ABC$ such that $\\\\angle BAD = \\\\angle DAC$ and $\\\\angle BDC = 90^\\\\circ$. Suppose that $AD = 1$ and that $\\\\frac{BD}{CD} = \\\\frac{3}{2}$. If $AB + AC$ can be expressed in the form $\\\\frac{a\\\\sqrt{b}}{c}$ where $a, b, c$ are pairwise relatively prime integers, find $a + b + c$.'"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataset[0][\"prompt\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 35
    },
    "id": "KGupRQqD-Wcf",
    "outputId": "97436064-6b15-47fd-ffb0-20a475348111"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.google.colaboratory.intrinsic+json": {
       "type": "string"
      },
      "text/plain": [
       "'34'"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataset[0][\"solution\"]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "CmnXj6hn-Ydi"
   },
   "source": [
    "In GSM8K, ee notice all answers like about have a ####, so we extract it. But for the Open R1 dataset, we can skip the below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 35
    },
    "id": "8JJGXKdJ-Zl_",
    "outputId": "ab4c7b08-064a-482c-dc26-863c0bef8833"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.google.colaboratory.intrinsic+json": {
       "type": "string"
      },
      "text/plain": [
       "'34'"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def extract_hash_answer(text):\n",
    "    # if \"####\" not in text: return None\n",
    "    # return text.split(\"####\")[1].strip()\n",
    "    return text\n",
    "extract_hash_answer(dataset[0][\"solution\"])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "K30CygaU-dir"
   },
   "source": [
    "Let's map the dataset! and see the first row:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 379,
     "referenced_widgets": [
      "444d3385ceab40b69d8b62693287e09c",
      "7381c7133987492cbae358f771a9f663",
      "aa52c725508b41e1ab5425a9d056a712",
      "d703ead319a64737a8156f433a7cbea1",
      "a484088c3a4f4aabbaf9d1244b41ab02",
      "1de00dff765544ff8c84efac59da32e5",
      "3dc376e829f647988aa554e4f38328f3",
      "2d035cb7a8d148dba83805f703d93363",
      "f8cd35fc12264b74b914fb3d68512f4c",
      "c569983e7c54402ab1b49bc301013ea7",
      "945f5beb5e78431fa300053b84045494"
     ]
    },
    "id": "qyEVI972-d3n",
    "outputId": "b14331c4-d2bf-4897-97b2-43165535a3b8"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "444d3385ceab40b69d8b62693287e09c",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Map:   0%|          | 0/14116 [00:00<?, ? examples/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "{'prompt': [{'content': 'You are given a problem.\\nThink about the problem and provide your working out.\\nPlace it between <start_working_out> and <end_working_out>.\\nThen, provide your solution between <SOLUTION></SOLUTION>',\n",
       "   'role': 'system'},\n",
       "  {'content': 'In triangle $ABC$, $\\\\sin \\\\angle A = \\\\frac{4}{5}$ and $\\\\angle A < 90^\\\\circ$. Let $D$ be a point outside triangle $ABC$ such that $\\\\angle BAD = \\\\angle DAC$ and $\\\\angle BDC = 90^\\\\circ$. Suppose that $AD = 1$ and that $\\\\frac{BD}{CD} = \\\\frac{3}{2}$. If $AB + AC$ can be expressed in the form $\\\\frac{a\\\\sqrt{b}}{c}$ where $a, b, c$ are pairwise relatively prime integers, find $a + b + c$.',\n",
       "   'role': 'user'}],\n",
       " 'solution': '34',\n",
       " 'data_source': 'math_dapo',\n",
       " 'source_prompt': [{'content': 'Solve the following math problem step by step. The last line of your response should be of the form Answer: $Answer (without quotes) where $Answer is the answer to the problem.\\n\\nIn triangle $ABC$, $\\\\sin \\\\angle A = \\\\frac{4}{5}$ and $\\\\angle A < 90^\\\\circ$. Let $D$ be a point outside triangle $ABC$ such that $\\\\angle BAD = \\\\angle DAC$ and $\\\\angle BDC = 90^\\\\circ$. Suppose that $AD = 1$ and that $\\\\frac{BD}{CD} = \\\\frac{3}{2}$. If $AB + AC$ can be expressed in the form $\\\\frac{a\\\\sqrt{b}}{c}$ where $a, b, c$ are pairwise relatively prime integers, find $a + b + c$.\\n\\nRemember to put your answer on its own line after \"Answer:\".',\n",
       "   'role': 'user'}],\n",
       " 'ability': 'MATH',\n",
       " 'reward_model': {'ground_truth': '34', 'style': 'rule-lighteval/MATH_v2'},\n",
       " 'extra_info': {'index': '9a9b6eb4-a1cb-49d1-8c1e-62eaf2f74079'},\n",
       " 'answer': '34'}"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataset = dataset.map(lambda x: {\n",
    "    \"prompt\" : [\n",
    "        {\"role\": \"system\", \"content\": system_prompt},\n",
    "        {\"role\": \"user\",   \"content\": x[\"prompt\"]},\n",
    "    ],\n",
    "    \"answer\": extract_hash_answer(x[\"solution\"]),\n",
    "})\n",
    "dataset[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "-9m8eR9T-gMh"
   },
   "source": [
    "We create a regex format to match the reasoning sections and answers:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "iQwjTjNz-gY_",
    "outputId": "49f87ee9-60be-4251-f356-1fddfde65269"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "re.compile(r'<end_working_out>.*?<SOLUTION>(.+?)</SOLUTION>[\\s]{0,}(?:<\\|im_end\\|>)?[\\s]{0,}$',\n",
       "re.MULTILINE|re.DOTALL|re.UNICODE)"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import re\n",
    "\n",
    "# Add optional EOS token matching\n",
    "solution_end_regex = r\"</SOLUTION>[\\s]{0,}\" + \\\n",
    "    \"(?:\" + re.escape(tokenizer.eos_token) + \")?\"\n",
    "\n",
    "match_format = re.compile(\n",
    "    rf\"{reasoning_end}.*?\"\\\n",
    "    rf\"{solution_start}(.+?){solution_end_regex}\"\\\n",
    "    rf\"[\\s]{{0,}}$\",\n",
    "    flags = re.MULTILINE | re.DOTALL\n",
    ")\n",
    "match_format"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "OycMneOq-iNC"
   },
   "source": [
    "We verify it works:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "ndzHnQ_6-jHt",
    "outputId": "eb3ebae5-b6c1-46d6-e3e7-362218eac82e"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['\\n2\\n']"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "match_format.findall(\n",
    "    \"Let me think!<end_working_out>\"\\\n",
    "    f\"<SOLUTION>\\n2\\n</SOLUTION>\",\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "eRMDAzDk2x6t",
    "outputId": "b4ff0773-b40a-456e-f089-cba306ef98a8"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['  2  ']"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "match_format.findall(\n",
    "    \"<start_working_out>Let me think!<end_working_out>\"\\\n",
    "    f\"<SOLUTION>  2  </SOLUTION>\\n\\n\",\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "weOjmO5l-kl3"
   },
   "source": [
    "We now want to create a reward function to match the format exactly - we reward it with 3 points if it succeeds:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "qgFNXORy-lpO"
   },
   "outputs": [],
   "source": [
    "def match_format_exactly(completions, **kwargs):\n",
    "    scores = []\n",
    "    for completion in completions:\n",
    "        score = 0\n",
    "        response = completion[0][\"content\"]\n",
    "        # Match if format is seen exactly!\n",
    "        if match_format.search(response) is not None: score += 3.0\n",
    "        scores.append(score)\n",
    "    return scores"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Gf69i2WT-m4K"
   },
   "source": [
    "If it fails, we want to reward the model if it at least follows the format partially, by counting each symbol:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "cUfHzCVx-nGK"
   },
   "outputs": [],
   "source": [
    "def match_format_approximately(completions, **kwargs):\n",
    "    scores = []\n",
    "    for completion in completions:\n",
    "        score = 0\n",
    "        response = completion[0][\"content\"]\n",
    "        # Count how many keywords are seen - we penalize if too many!\n",
    "        # If we see 1, then plus some points!\n",
    "\n",
    "        # No need to reward <start_working_out> since we always prepend it!\n",
    "        # score += 0.5 if response.count(reasoning_start) == 1 else -1.0\n",
    "        score += 0.5 if response.count(reasoning_end)   == 1 else -1.0\n",
    "        score += 0.5 if response.count(solution_start)  == 1 else -1.0\n",
    "        score += 0.5 if response.count(solution_end)    == 1 else -1.0\n",
    "        scores.append(score)\n",
    "    return scores"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "9wAUWwtE-s6n"
   },
   "source": [
    "Finally, we want to extract the generated answer, and reward or penalize it! We also reward it based on how close the answer is to the true one via ratios:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "hmtI_8gg-uIE"
   },
   "outputs": [],
   "source": [
    "def check_answer(prompts, completions, answer, **kwargs):\n",
    "    question = prompts[0][-1][\"content\"]\n",
    "    responses = [completion[0][\"content\"] for completion in completions]\n",
    "\n",
    "    extracted_responses = [\n",
    "        guess.group(1)\n",
    "        if (guess := match_format.search(r)) is not None else None \\\n",
    "        for r in responses\n",
    "    ]\n",
    "\n",
    "    scores = []\n",
    "    for guess, true_answer in zip(extracted_responses, answer):\n",
    "        score = 0\n",
    "        if guess is None:\n",
    "            scores.append(-2.0)\n",
    "            continue\n",
    "        # Correct answer gets 5 points!\n",
    "        if guess == true_answer:\n",
    "            score += 5.0\n",
    "        # Match if spaces are seen, but less reward\n",
    "        elif guess.strip() == true_answer.strip():\n",
    "            score += 3.5\n",
    "        else:\n",
    "            # We also reward it if the answer is close via ratios!\n",
    "            # Ie if the answer is within some range, reward it!\n",
    "            try:\n",
    "                ratio = float(guess) / float(true_answer)\n",
    "                if   ratio >= 0.9 and ratio <= 1.1: score += 2.0\n",
    "                elif ratio >= 0.8 and ratio <= 1.2: score += 1.5\n",
    "                else: score -= 2.5 # Penalize wrong answers\n",
    "            except:\n",
    "                score -= 4.5 # Penalize\n",
    "        scores.append(score)\n",
    "    return scores"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "atMyfhXh-v3R"
   },
   "source": [
    "Also sometimes it might not be 1 number as the answer, but like a sentence for example \"The solution is $20\" -> we extract 20.\n",
    "\n",
    "We also remove possible commas for example as in 123,456"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "AVW0kL8q-wL5",
    "outputId": "1ce8e2eb-11a0-4caf-84a4-64e5dc401ef0"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['0.34']\n",
      "['123,456']\n",
      "['-0.234']\n",
      "['17']\n"
     ]
    }
   ],
   "source": [
    "match_numbers = re.compile(\n",
    "    solution_start + r\".*?[\\s]{0,}([-]?[\\d\\.\\,]{1,})\",\n",
    "    flags = re.MULTILINE | re.DOTALL\n",
    ")\n",
    "print(match_numbers.findall(\"<SOLUTION>  0.34  </SOLUTION>\"))\n",
    "print(match_numbers.findall(\"<SOLUTION>  123,456  </SOLUTION>\"))\n",
    "print(match_numbers.findall(\"<SOLUTION>  -0.234  </SOLUTION>\"))\n",
    "print(match_numbers.findall(\"<SOLUTION>17</SOLUTION>\"))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "RbfaaAywNHHh"
   },
   "source": [
    "We now prepare our main function which will print out the generated responses and the true answer, along with another reward function which converts text to float via `float` and sees if it's the same."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "GjBFrttr-y1_"
   },
   "outputs": [],
   "source": [
    "global PRINTED_TIMES\n",
    "PRINTED_TIMES = 0\n",
    "global PRINT_EVERY_STEPS\n",
    "PRINT_EVERY_STEPS = 5\n",
    "\n",
    "def check_numbers(prompts, completions, answer, **kwargs):\n",
    "    question = prompts[0][-1][\"content\"]\n",
    "    responses = [completion[0][\"content\"] for completion in completions]\n",
    "\n",
    "    extracted_responses = [\n",
    "        guess.group(1)\n",
    "        if (guess := match_numbers.search(r)) is not None else None \\\n",
    "        for r in responses\n",
    "    ]\n",
    "\n",
    "    scores = []\n",
    "    # Print only every few steps\n",
    "    global PRINTED_TIMES\n",
    "    global PRINT_EVERY_STEPS\n",
    "    if PRINTED_TIMES % PRINT_EVERY_STEPS == 0:\n",
    "        print(\n",
    "            '*'*20 + f\"Question:\\n{question}\", f\"\\nAnswer:\\n{answer[0]}\", f\"\\nResponse:\\n{responses[0]}\", f\"\\nExtracted:\\n{extracted_responses[0]}\"\n",
    "        )\n",
    "    PRINTED_TIMES += 1\n",
    "\n",
    "    for guess, true_answer in zip(extracted_responses, answer):\n",
    "        if guess is None:\n",
    "            scores.append(-2.5)\n",
    "            continue\n",
    "        # Convert to numbers\n",
    "        try:\n",
    "            true_answer = float(true_answer.strip())\n",
    "            # Remove commas like in 123,456\n",
    "            guess       = float(guess.strip().replace(\",\", \"\"))\n",
    "            scores.append(3.5 if guess == true_answer else -1.5)\n",
    "        except:\n",
    "            scores.append(0)\n",
    "            continue\n",
    "    return scores"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "fgOR3wJ_AyLr"
   },
   "source": [
    "Get the top 90% prompt length so we don't accidentally truncate them!\n",
    "\n",
    "Ie we'll remove the top 10% long prompts."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 188,
     "referenced_widgets": [
      "fedf0624542a49fdaaa6128c12807b96",
      "a2dafed986224ac08cbe4fbf255021cf",
      "43c18d6bbc974b44baa0fbfad23863c2",
      "248b29dfe3634b49ae00603eb7c378e2",
      "9083770fc2724da8904decc7bce6f6c3",
      "215025d08c874638bc986817043a30ed",
      "18217ca4bfb04bbfbf89295a29acfdf6",
      "3d9cd52b51774a69951f6e846c8e6d05",
      "dadfe8500d8f428aa3e4956d4138a90e",
      "48274f858b5347f9bf67752bef2bb4a7",
      "d2c7235b97b042a2a4af1d6a1bdbc788",
      "ca08a301ba38499688cf62c223c3b680",
      "7ec0e35a64bb413985af098f3b185649",
      "b1b1d167f54c4fb6b0f73e7be3187b8c",
      "27ca7417e18c4c59bfff3d50d34cfaaa",
      "80501b4ca1b94cabb9fac0f5b4c52dc0",
      "4e55bfcec17e47eda76d7d6673f40e83",
      "e5ea2683cdcb4971b94d2222b943f969",
      "4038af15b878430e83e2a9dfce9c0a53",
      "874a0807f1cf436090204fb692fb4c97",
      "06fdaa32d11b4defb14548bbfd6d949b",
      "9cc7d2877fed4f9ebfdf7bcf206bd8e5"
     ]
    },
    "id": "6EgAi4Q5fGE-",
    "outputId": "75c6bcf6-c72c-44e7-d0f1-c253286de95f"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "fedf0624542a49fdaaa6128c12807b96",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Map:   0%|          | 0/14116 [00:00<?, ? examples/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "You are given a problem.\n",
      "Think about the problem and provide your working out.\n",
      "Place it between <start_working_out> and <end_working_out>.\n",
      "Then, provide your solution between <SOLUTION></SOLUTION><|im_end|>In triangle $ABC$, $\\sin \\angle A = \\frac{4}{5}$ and $\\angle A < 90^\\circ$. Let $D$ be a point outside triangle $ABC$ such that $\\angle BAD = \\angle DAC$ and $\\angle BDC = 90^\\circ$. Suppose that $AD = 1$ and that $\\frac{BD}{CD} = \\frac{3}{2}$. If $AB + AC$ can be expressed in the form $\\frac{a\\sqrt{b}}{c}$ where $a, b, c$ are pairwise relatively prime integers, find $a + b + c$.<start_working_out>\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "ca08a301ba38499688cf62c223c3b680",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Map:   0%|          | 0/14116 [00:00<?, ? examples/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Max Length =  201\n"
     ]
    }
   ],
   "source": [
    "tokenized = dataset.map(\n",
    "    lambda x: {\"tokens\" : tokenizer.apply_chat_template(x[\"prompt\"], add_generation_prompt = True, tokenize = True)},\n",
    "    batched = True,\n",
    ")\n",
    "print(tokenizer.decode(tokenized[0][\"tokens\"]))\n",
    "tokenized = tokenized.map(lambda x: {\"L\" : len(x[\"tokens\"])})\n",
    "\n",
    "import numpy as np\n",
    "maximum_length = int(np.quantile(tokenized[\"L\"], 0.9))\n",
    "print(\"Max Length = \", maximum_length)\n",
    "\n",
    "# Filter only samples smaller than 90% max length\n",
    "dataset = dataset.select(np.where(np.array(tokenized[\"L\"]) <= maximum_length)[0])\n",
    "del tokenized"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "9-IOMhVg-2AM"
   },
   "source": [
    "<a name=\"Train\"></a>\n",
    "### Train the model\n",
    "\n",
    "Now set up GRPO Trainer and all configurations!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "ptqkXK2D4d6p"
   },
   "outputs": [],
   "source": [
    "max_prompt_length = maximum_length + 1 # + 1 just in case!\n",
    "max_completion_length = max_seq_length - max_prompt_length\n",
    "\n",
    "from vllm import SamplingParams\n",
    "vllm_sampling_params = SamplingParams(\n",
    "    min_p = 0.1,\n",
    "    top_p = 1.0,\n",
    "    top_k = -1,\n",
    "    seed = 3407,\n",
    "    stop = [tokenizer.eos_token],\n",
    "    include_stop_str_in_output = True,\n",
    ")\n",
    "\n",
    "from trl import GRPOConfig, GRPOTrainer\n",
    "training_args = GRPOConfig(\n",
    "    vllm_sampling_params = vllm_sampling_params,\n",
    "    temperature = 1.0,\n",
    "    learning_rate = 5e-6,\n",
    "    weight_decay = 0.01,\n",
    "    warmup_ratio = 0.1,\n",
    "    lr_scheduler_type = \"linear\",\n",
    "    optim = \"adamw_8bit\",\n",
    "    logging_steps = 1,\n",
    "    per_device_train_batch_size = 4,\n",
    "    gradient_accumulation_steps = 1, # Increase to 4 for smoother training\n",
    "    num_generations = 4, # Decrease if out of memory\n",
    "    max_prompt_length = max_prompt_length,\n",
    "    max_completion_length = max_completion_length,\n",
    "    # num_train_epochs = 1, # Set to 1 for a full training run\n",
    "    max_steps = 100,\n",
    "    save_steps = 100,\n",
    "    report_to = \"none\", # Can use Weights & Biases\n",
    "    output_dir = \"outputs\",\n",
    "\n",
    "    # For optional training + evaluation\n",
    "    # fp16_full_eval = True,\n",
    "    # per_device_eval_batch_size = 4,\n",
    "    # eval_accumulation_steps = 1,\n",
    "    # eval_strategy = \"steps\",\n",
    "    # eval_steps = 1,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "r9Mv8UZO5hz-"
   },
   "source": [
    "And let's run the trainer! If you scroll up, you'll see a table of rewards. The goal is to see the `reward` column increase!\n",
    "\n",
    "You might have to wait 150 to 200 steps for any action. You'll probably get 0 reward for the first 100 steps. Please be patient!\n",
    "\n",
    "| Step | Training Loss | reward    | reward_std | completion_length | kl       |\n",
    "|------|---------------|-----------|------------|-------------------|----------|\n",
    "| 1    | 0.000000      | 0.125000  | 0.000000   | 200.000000        | 0.000000 |\n",
    "| 2    | 0.000000      | 0.072375  | 0.248112   | 200.000000        | 0.000000 |\n",
    "| 3    | 0.000000      | -0.079000 | 0.163776   | 182.500000        | 0.000005 |\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1000
    },
    "id": "vzOuSVCL_GA9",
    "outputId": "d03d7f5a-cca4-4f3f-91f7-028fce58e50b"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "==((====))==  Unsloth - 2x faster free finetuning | Num GPUs used = 1\n",
      "   \\\\   /|    Num examples = 12,709 | Num Epochs = 1 | Total steps = 100\n",
      "O^O/ \\_/ \\    Batch size per device = 4 | Gradient accumulation steps = 1\n",
      "\\        /    Data Parallel GPUs = 1 | Total batch size (4 x 1 x 1) = 4\n",
      " \"-____-\"     Trainable parameters = 87,293,952 of 8,278,453,248 (1.05% trained)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "********************Question:\n",
      "Compute the number of positive integers that divide at least two of the integers in the set $\\{1^1,2^2,3^3,4^4,5^5,6^6,7^7,8^8,9^9,10^{10}\\}$. \n",
      "Answer:\n",
      "22 \n",
      "Response:\n",
      "Okay, so I need to find the number of positive integers that divide at least two of the numbers in the set {1\u00b9, 2\u00b2, 3\u00b3, 4\u2074, 5\u2075, 6\u2076, 7\u2077, 8\u2078, 9\u2079, 10\u00b9\u2070}. Hmm, let's break this down step by step.\n",
      "\n",
      "First, maybe I should list out all those numbers and their prime factorizations. Because divisors are related to prime factors, right? If I can find the prime factors of each number in the set, then any common divisor would have to be a product of primes present in all those numbers. Wait, but the problem says \"divide at least two of the integers\". So I need all positive integers that are divisors of at least two different elements in the set. So the problem is asking for the union of all pairwise greatest common divisors (GCDs) of these numbers. But maybe it's easier to find all divisors of each pair and then take the union? But that sounds complicated because there are C(10,2)=45 pairs. Maybe there's a smarter way.\n",
      "\n",
      "Alternatively, maybe think about the least common multiples (LCMs)? Wait, no. Wait, divisors of at least two numbers. So if a number divides two different elements in the set, then it's a common divisor of those two elements. Therefore, the set of all such positive integers is the union of the sets of common divisors of each pair of elements in the set.\n",
      "\n",
      "But taking the union over all pairs... That seems like a lot. Maybe we can find all the common divisors of pairs and then find the union. But how can we do that efficiently?\n",
      "\n",
      "Alternatively, perhaps find all the numbers that are common divisors of at least two elements in the set. So if I can find the intersection of the sets of divisors of each pair, but taking the union over all pairs. Which is the same as the set of all positive integers that are divisors of at least two elements in the set.\n",
      "\n",
      "But maybe another approach: the divisors of at least two elements are the union of all divisors of each element, but intersected with the divisors of another element. Wait, maybe inclusion-exclusion? But inclusion-exclusion for unions would be complicated here.\n",
      "\n",
      "Wait, perhaps another way: The problem is equivalent to finding the size of the union of all divisors of each pair of elements in the set. So if I denote the elements as a1, a2, ..., a10, then the set we're interested in is the union of divisors of ai and aj for all i < j. So the total number is the union over all pairs.\n",
      "\n",
      "But calculating the union of all these sets might be tricky. But maybe we can find the complement: the numbers that do not divide at least two elements. That is, numbers that divide at most one element in the set. Then, subtract that from the total number of positive integers. But since there are infinitely many positive integers, that approach might not work. So that's not helpful.\n",
      "\n",
      "Alternatively, perhaps note that any common divisor of two elements must divide their greatest common divisor (GCD). So if I can find the GCDs of all pairs, then the set of divisors we're interested in is the union of all divisors of each GCD of some pair. So maybe if I can find all the GCDs of pairs, then take the union of their divisors.\n",
      "\n",
      "But again, since there are 45 pairs, that's still a lot, but maybe some GCDs are repeated or can be simplified.\n",
      "\n",
      "Alternatively, maybe find all the common divisors of the entire set. Let me think. The greatest common divisor of all elements in the set would be the maximum number that divides every element. Then, any divisor of that GCD would divide all elements, hence certainly divide at least two elements. But there could be other numbers that divide some elements but not all. So the total number we're looking for is the union of the divisors of the GCD of all pairs (which includes divisors of the overall GCD) and maybe others.\n",
      "\n",
      "Wait, but this might not capture all possibilities. For example, a number could divide two elements but not the GCD of all elements.\n",
      "\n",
      "Alternatively, perhaps find all numbers that divide at least one pair. But how?\n",
      "\n",
      "Wait, maybe we can look for the divisors of each element and then find the union of all divisors that appear in at least two different elements. Wait, that is, if I take the divisors of each element in the set and then consider those divisors that are common to at least two elements. So, for example, a divisor d of both a_i and a_j would be counted. So the problem reduces to finding the union of the intersection of divisors for each pair. But again, how to compute this.\n",
      "\n",
      "Alternatively, perhaps think of the problem as finding the union over all pairs (ai, aj) of the set of common divisors of ai and aj. Then the total number we want is the size of that union.\n",
      "\n",
      "To compute this, maybe first find all the common divisors of each pair, collect them all, and then count the distinct ones. But with 10 elements, there are 45 pairs. Each pair's GCD could potentially contribute some divisors. But if I can list all the GCDs of the pairs and then collect all their divisors, that might work.\n",
      "\n",
      "But this seems tedious, but maybe manageable.\n",
      "\n",
      "First, let's list all the elements in the set:\n",
      "\n",
      "Let me compute each term:\n",
      "\n",
      "1^1 = 1\n",
      "\n",
      "2^2 = 4\n",
      "\n",
      "3^3 = 27\n",
      "\n",
      "4^4 = 256\n",
      "\n",
      "5^5 = 3125\n",
      "\n",
      "6^6 = 46656\n",
      "\n",
      "7^7 = 823543\n",
      "\n",
      "8^8 = 16777216\n",
      "\n",
      "9^9 = 387420489\n",
      "\n",
      "10^10 = 10000000000\n",
      "\n",
      "Wait, but maybe it's easier to work with their prime factorizations. Let's do that.\n",
      "\n",
      "Let me find the prime factorization of each element:\n",
      "\n",
      "1. 1^1: 1. Since 1 has no prime factors.\n",
      "\n",
      "2. 2^2: 2\u00b2\n",
      "\n",
      "3. 3^3: 3\u00b3\n",
      "\n",
      "4. 4^4: (2\u00b2)^4 = 2^8\n",
      "\n",
      "5. 5^5: 5^5\n",
      "\n",
      "6. 6^6: (2\u00d73)^6 = 2^6 \u00d7 3^6\n",
      "\n",
      "7. 7^7: 7^7\n",
      "\n",
      "8. 8^8: (2\u00b3)^8 = 2^24\n",
      "\n",
      "9. 9^9: (3\u00b2)^9 = 3^18\n",
      "\n",
      "10. 10^10: (2\u00d75)^10 = 2^10 \u00d7 5^10\n",
      "\n",
      "So the set of elements is:\n",
      "\n",
      "a1 = 1 (prime factors: none)\n",
      "\n",
      "a2 = 2\u00b2\n",
      "\n",
      "a3 = 3\u00b3\n",
      "\n",
      "a4 = 2\u2078\n",
      "\n",
      "a5 = 5\u2075\n",
      "\n",
      "a6 = 2\u2076 \u00d7 3\u2076\n",
      "\n",
      "a7 = 7\u2077\n",
      "\n",
      "a8 = 2\u00b2\u2074\n",
      "\n",
      "a9 = 3\u00b9\u2078\n",
      "\n",
      "a10 = 2\u00b9\u2070 \u00d7 5\u00b9\u2070\n",
      "\n",
      "Now, any divisor of at least two elements must divide their GCD. So for each pair of elements, compute their GCD, then collect all divisors of those GCDs, and then take the union.\n",
      "\n",
      "But since 1 divides every number, but we have to be careful if 1 is included. Wait, the problem says \"positive integers\", so 1 is included. But since 1 divides every number, it divides all pairs, so 1 is definitely in the set. Similarly, other divisors.\n",
      "\n",
      "But to find all such divisors, perhaps first note that any divisor of two elements must divide their GCD. Therefore, the set of all positive integers that divide at least two elements is the union of the positive divisors of the GCD of every pair of elements. Therefore, the problem reduces to finding the union of all divisors of the GCDs of each pair. Then, the answer is the number of distinct positive integers in that union.\n",
      "\n",
      "But how can we compute this efficiently?\n",
      "\n",
      "First, note that for pairs involving a1 (which is 1), the GCD of 1 and any other number is 1. Therefore, all divisors of 1, which is just 1 itself, will be included. So  \n",
      "Extracted:\n",
      "None\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "      \n",
       "      <progress value='100' max='100' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      [100/100 2:43:09, Epoch 0/1]\n",
       "    </div>\n",
       "    <table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       " <tr style=\"text-align: left;\">\n",
       "      <th>Step</th>\n",
       "      <th>Training Loss</th>\n",
       "      <th>reward</th>\n",
       "      <th>reward_std</th>\n",
       "      <th>completions / mean_length</th>\n",
       "      <th>completions / min_length</th>\n",
       "      <th>completions / max_length</th>\n",
       "      <th>completions / clipped_ratio</th>\n",
       "      <th>completions / mean_terminated_length</th>\n",
       "      <th>completions / min_terminated_length</th>\n",
       "      <th>completions / max_terminated_length</th>\n",
       "      <th>kl</th>\n",
       "      <th>rewards / match_format_exactly / mean</th>\n",
       "      <th>rewards / match_format_exactly / std</th>\n",
       "      <th>rewards / match_format_approximately / mean</th>\n",
       "      <th>rewards / match_format_approximately / std</th>\n",
       "      <th>rewards / check_answer / mean</th>\n",
       "      <th>rewards / check_answer / std</th>\n",
       "      <th>rewards / check_numbers / mean</th>\n",
       "      <th>rewards / check_numbers / std</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>0.000200</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.150790</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.142680</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.124777</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.078243</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>0.000200</td>\n",
       "      <td>13.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1174.750000</td>\n",
       "      <td>809.000000</td>\n",
       "      <td>1579.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1174.750000</td>\n",
       "      <td>809.000000</td>\n",
       "      <td>1579.000000</td>\n",
       "      <td>0.232202</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.096974</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>0.000200</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.159330</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.102879</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.115146</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.099295</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>0.000200</td>\n",
       "      <td>7.875000</td>\n",
       "      <td>10.250000</td>\n",
       "      <td>1515.750000</td>\n",
       "      <td>1091.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>1405.666748</td>\n",
       "      <td>1091.000000</td>\n",
       "      <td>1570.000000</td>\n",
       "      <td>0.214338</td>\n",
       "      <td>2.250000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>0.375000</td>\n",
       "      <td>2.250000</td>\n",
       "      <td>3.250000</td>\n",
       "      <td>3.500000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>0.000200</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.186030</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>0.000200</td>\n",
       "      <td>-5.500000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1740.750000</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>0.158569</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>-1.875000</td>\n",
       "      <td>2.250000</td>\n",
       "      <td>-2.125000</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>-2.250000</td>\n",
       "      <td>0.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>0.000200</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.165253</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.135159</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.095025</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.092452</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.092974</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.127095</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>20</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.131149</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>21</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.112292</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>22</td>\n",
       "      <td>0.000200</td>\n",
       "      <td>13.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1517.000000</td>\n",
       "      <td>1355.000000</td>\n",
       "      <td>1644.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1517.000000</td>\n",
       "      <td>1355.000000</td>\n",
       "      <td>1644.000000</td>\n",
       "      <td>0.161491</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>23</td>\n",
       "      <td>0.000200</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.216463</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>24</td>\n",
       "      <td>0.000200</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.164761</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>25</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-2.375000</td>\n",
       "      <td>10.250000</td>\n",
       "      <td>1825.250000</td>\n",
       "      <td>1763.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>1763.000000</td>\n",
       "      <td>1763.000000</td>\n",
       "      <td>1763.000000</td>\n",
       "      <td>0.109286</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>-1.875000</td>\n",
       "      <td>2.250000</td>\n",
       "      <td>-0.250000</td>\n",
       "      <td>3.500000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>26</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.140780</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>27</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.147005</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>28</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.090275</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>29</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.092940</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>30</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.079017</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>31</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.102979</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>32</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.104066</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>33</td>\n",
       "      <td>0.000200</td>\n",
       "      <td>13.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1554.000000</td>\n",
       "      <td>1406.000000</td>\n",
       "      <td>1721.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1554.000000</td>\n",
       "      <td>1406.000000</td>\n",
       "      <td>1721.000000</td>\n",
       "      <td>0.187886</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>34</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.065316</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>35</td>\n",
       "      <td>0.000200</td>\n",
       "      <td>-2.375000</td>\n",
       "      <td>10.250000</td>\n",
       "      <td>1789.500000</td>\n",
       "      <td>1620.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>1620.000000</td>\n",
       "      <td>1620.000000</td>\n",
       "      <td>1620.000000</td>\n",
       "      <td>0.170010</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>-1.875000</td>\n",
       "      <td>2.250000</td>\n",
       "      <td>-0.250000</td>\n",
       "      <td>3.500000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>36</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.077268</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>37</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.143814</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>38</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.137096</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>39</td>\n",
       "      <td>0.000200</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.156594</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>40</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.039859</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>41</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.096136</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>42</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.102379</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>43</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.127313</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>44</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.111931</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>45</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.147351</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>46</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.090658</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>47</td>\n",
       "      <td>0.000200</td>\n",
       "      <td>7.875000</td>\n",
       "      <td>10.250000</td>\n",
       "      <td>1694.250000</td>\n",
       "      <td>1529.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>1643.666748</td>\n",
       "      <td>1529.000000</td>\n",
       "      <td>1793.000000</td>\n",
       "      <td>0.188058</td>\n",
       "      <td>2.250000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>0.375000</td>\n",
       "      <td>2.250000</td>\n",
       "      <td>3.250000</td>\n",
       "      <td>3.500000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>48</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.113714</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>49</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.105075</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>50</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.084926</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>51</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.094756</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>52</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-2.375000</td>\n",
       "      <td>10.250000</td>\n",
       "      <td>1838.250000</td>\n",
       "      <td>1815.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>1815.000000</td>\n",
       "      <td>1815.000000</td>\n",
       "      <td>1815.000000</td>\n",
       "      <td>0.140348</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>-1.875000</td>\n",
       "      <td>2.250000</td>\n",
       "      <td>-0.250000</td>\n",
       "      <td>3.500000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>53</td>\n",
       "      <td>0.000200</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.192286</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>54</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.101775</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>55</td>\n",
       "      <td>0.000200</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.153503</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>56</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>13.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1411.500000</td>\n",
       "      <td>1237.000000</td>\n",
       "      <td>1565.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1411.500000</td>\n",
       "      <td>1237.000000</td>\n",
       "      <td>1565.000000</td>\n",
       "      <td>0.149202</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>57</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>2.750000</td>\n",
       "      <td>11.835680</td>\n",
       "      <td>1696.750000</td>\n",
       "      <td>1337.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>1547.500000</td>\n",
       "      <td>1337.000000</td>\n",
       "      <td>1758.000000</td>\n",
       "      <td>0.137428</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>1.732051</td>\n",
       "      <td>-0.750000</td>\n",
       "      <td>2.598076</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>4.041452</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>3.464102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>58</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.065607</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>59</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.138828</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>60</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.083694</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>61</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.066916</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>62</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.114494</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>63</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.076233</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>64</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.061013</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>65</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.119921</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>66</td>\n",
       "      <td>0.000200</td>\n",
       "      <td>2.750000</td>\n",
       "      <td>11.835680</td>\n",
       "      <td>1778.000000</td>\n",
       "      <td>1670.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>1710.000000</td>\n",
       "      <td>1670.000000</td>\n",
       "      <td>1750.000000</td>\n",
       "      <td>0.151326</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>1.732051</td>\n",
       "      <td>-0.750000</td>\n",
       "      <td>2.598076</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>4.041452</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>3.464102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>67</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.077012</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>68</td>\n",
       "      <td>0.000200</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.167730</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>69</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-2.375000</td>\n",
       "      <td>10.250000</td>\n",
       "      <td>1830.750000</td>\n",
       "      <td>1785.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>1785.000000</td>\n",
       "      <td>1785.000000</td>\n",
       "      <td>1785.000000</td>\n",
       "      <td>0.114810</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>-1.875000</td>\n",
       "      <td>2.250000</td>\n",
       "      <td>-0.250000</td>\n",
       "      <td>3.500000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>70</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.110773</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>71</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.094290</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>72</td>\n",
       "      <td>0.001100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.057150</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>73</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.112670</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>74</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.068313</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>75</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.095120</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>76</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.077905</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>77</td>\n",
       "      <td>0.000200</td>\n",
       "      <td>7.875000</td>\n",
       "      <td>10.250000</td>\n",
       "      <td>1435.000000</td>\n",
       "      <td>1008.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>1298.000000</td>\n",
       "      <td>1008.000000</td>\n",
       "      <td>1703.000000</td>\n",
       "      <td>0.177285</td>\n",
       "      <td>2.250000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>0.375000</td>\n",
       "      <td>2.250000</td>\n",
       "      <td>3.250000</td>\n",
       "      <td>3.500000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>78</td>\n",
       "      <td>0.000200</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.170581</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>79</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>2.750000</td>\n",
       "      <td>11.835680</td>\n",
       "      <td>1738.500000</td>\n",
       "      <td>1549.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>1631.000000</td>\n",
       "      <td>1549.000000</td>\n",
       "      <td>1713.000000</td>\n",
       "      <td>0.094084</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>1.732051</td>\n",
       "      <td>-0.750000</td>\n",
       "      <td>2.598076</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>4.041452</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>3.464102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>80</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.094441</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>81</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.101571</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>82</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.136910</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>83</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.102724</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>84</td>\n",
       "      <td>0.000200</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.206972</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>85</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.129181</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>86</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.085116</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>87</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.107475</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>88</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-2.375000</td>\n",
       "      <td>10.250000</td>\n",
       "      <td>1842.500000</td>\n",
       "      <td>1832.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>1832.000000</td>\n",
       "      <td>1832.000000</td>\n",
       "      <td>1832.000000</td>\n",
       "      <td>0.106962</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>-1.875000</td>\n",
       "      <td>2.250000</td>\n",
       "      <td>-0.250000</td>\n",
       "      <td>3.500000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>89</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.098518</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>90</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.060549</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>91</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.101814</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>92</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.127964</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>93</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.072282</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>94</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-4.750000</td>\n",
       "      <td>5.500000</td>\n",
       "      <td>1758.000000</td>\n",
       "      <td>1494.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>1494.000000</td>\n",
       "      <td>1494.000000</td>\n",
       "      <td>1494.000000</td>\n",
       "      <td>0.116617</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>-1.875000</td>\n",
       "      <td>2.250000</td>\n",
       "      <td>-2.625000</td>\n",
       "      <td>1.250000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>95</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.061139</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>96</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.137039</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>97</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.133291</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>98</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.133280</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>99</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.114664</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>100</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>-7.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1846.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.139744</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table><p>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "********************Question:\n",
      "The sum of $\\lfloor x \\rfloor$ for all real numbers $x$ satisfying the equation $16 + 15x + 15x^2 = \\lfloor x \\rfloor^3$ is: \n",
      "Answer:\n",
      "33 \n",
      "Response:\n",
      "Okay, let's see. The problem is to find the sum of floor(x) for all real numbers x that satisfy the equation 16 + 15x + 15x\u00b2 = floor(x)\u00b3. Hmm, floor function can sometimes complicate things because it depends on the integer part of x. Let me break this down step by step.\n",
      "\n",
      "First, let me denote n as floor(x). So, n is an integer, and by definition of the floor function, we have n \u2264 x < n+1. So, x is in the interval [n, n+1). The equation given is 16 + 15x + 15x\u00b2 = n\u00b3. So, maybe I can rewrite the equation in terms of n and x.\n",
      "\n",
      "Let me rearrange the equation. Let's write it as 15x\u00b2 + 15x + 16 = n\u00b3. Hmm, maybe I can solve this quadratic equation for x in terms of n? Since x is between n and n+1, perhaps for each integer n, I can check if there are solutions x in [n, n+1) and then sum those n's.\n",
      "\n",
      "But first, maybe I should find possible integer values of n. Let's think about possible n's. Since x is at least n, substituting x = n into the equation would give 15n\u00b2 + 15n + 16 = n\u00b3. So, n\u00b3 -15n\u00b2 -15n -16 = 0. Let's see if there are integer solutions to this equation.\n",
      "\n",
      "Alternatively, maybe I should consider that x is in [n, n+1), so let's substitute x with a value in that interval and see what n can be. Since x is at least n, substituting the minimum x (which is n) into the left side of the equation 15x\u00b2 +15x +16 would give the minimum value of the left side for that interval. Similarly, substituting x approaching n+1 from the left would give the maximum value.\n",
      "\n",
      "So, maybe for each integer n, compute the minimum and maximum possible values of the left side when x is in [n, n+1), then check if n\u00b3 falls into that interval. If it does, then there might be solutions for x in that interval.\n",
      "\n",
      "Let me formalize this. For each integer n, compute the minimum and maximum of 15x\u00b2 +15x +16 on [n, n+1). Since 15x\u00b2 +15x +16 is a quadratic function in x, opening upwards (since the coefficient of x\u00b2 is positive), its minimum on any interval will occur at the left endpoint x = n, and the maximum will be at the right endpoint x approaching n+1.\n",
      "\n",
      "Wait, but actually, since it's a parabola opening upwards, the minimum on the interval [n, n+1) would be at x = n, and as x increases towards n+1, the value increases. Therefore, the expression 15x\u00b2 +15x +16 ranges from 15n\u00b2 +15n +16 to the limit as x approaches n+1, which is 15(n+1)\u00b2 +15(n+1) +16.\n",
      "\n",
      "Therefore, for each integer n, if n\u00b3 is between 15n\u00b2 +15n +16 and 15(n+1)\u00b2 +15(n+1) +16, then there exists some x in [n, n+1) satisfying the equation. Let's compute these bounds.\n",
      "\n",
      "First, compute the lower bound for each n: L(n) = 15n\u00b2 +15n +16.\n",
      "\n",
      "Upper bound for each n: U(n) = 15(n+1)\u00b2 +15(n+1) +16. Let's expand that:\n",
      "\n",
      "15(n\u00b2 + 2n +1) +15(n +1) +16 = 15n\u00b2 +30n +15 +15n +15 +16 = 15n\u00b2 +45n +46.\n",
      "\n",
      "So, the equation 15x\u00b2 +15x +16 = n\u00b3 must have n\u00b3 in [L(n), U(n)) for there to be a solution x in [n, n+1). Therefore, for each integer n, check if n\u00b3 is in [15n\u00b2 +15n +16, 15n\u00b2 +45n +46). If yes, then solve for x in that interval.\n",
      "\n",
      "But since n is floor(x), and x is in [n, n+1), n can be any integer. But maybe n is not too large or too small. Let's see.\n",
      "\n",
      "First, let's find possible n. Let's consider that n\u00b3 must be greater than or equal to 15n\u00b2 +15n +16. So, n\u00b3 -15n\u00b2 -15n -16 \u2265 0. Similarly, n\u00b3 must be less than 15n\u00b2 +45n +46, so n\u00b3 -15n\u00b2 -45n -46 < 0.\n",
      "\n",
      "So, solving these inequalities for n.\n",
      "\n",
      "First inequality: n\u00b3 -15n\u00b2 -15n -16 \u2265 0.\n",
      "\n",
      "Second inequality: n\u00b3 -15n\u00b2 -45n -46 < 0.\n",
      "\n",
      "So, for each integer n, check if both inequalities hold. Then, for those n, solve the equation 15x\u00b2 +15x +16 = n\u00b3 for x in [n, n+1), then check if the solution is in that interval. Then, sum all such n's.\n",
      "\n",
      "Alternatively, maybe try small integer values of n first.\n",
      "\n",
      "Let me try plugging in some integer values for n.\n",
      "\n",
      "Start with n=0:\n",
      "\n",
      "Check first inequality: 0 -0 -0 -16 = -16 \u2265 0? No. So discard.\n",
      "\n",
      "n=1:\n",
      "\n",
      "1 -15 -15 -16 = 1 - 46 = -45 \u2265 0? No.\n",
      "\n",
      "n=2:\n",
      "\n",
      "8 - 60 -30 -16 = 8 - 106 = -98 \u2265 0? No.\n",
      "\n",
      "n=3:\n",
      "\n",
      "27 - 135 -45 -16 = 27 - 296 = -269 \u22650? No.\n",
      "\n",
      "Hmm, seems negative. What about larger n? For example, n=16?\n",
      "\n",
      "Wait, maybe for large n, n\u00b3 dominates, so n\u00b3 -15n\u00b2 -15n -16 \u2248 n\u00b3, which is positive. So there must be some n where the first inequality holds.\n",
      "\n",
      "Wait, but perhaps we need to check for n where n\u00b3 is large enough. Let me find for which n, n\u00b3 \u2265 15n\u00b2 +15n +16.\n",
      "\n",
      "Divide both sides by n\u00b2 (assuming n>0):\n",
      "\n",
      "n \u2265 15 + 15/n + 16/n\u00b2. For n positive, as n increases, the right side approaches 15, so for n \u226515 + something, so for n \u226516, n will certainly be greater than 15 + ... So for n \u226516, the first inequality holds. Similarly, check for the upper bound: n\u00b3 -15n\u00b2 -45n -46 <0.\n",
      "\n",
      "For large n, n\u00b3 -15n\u00b2 -45n -46 \u2248 n\u00b3, which is positive. Therefore, the upper inequality will fail for large n. Therefore, there must be some upper bound on n where the upper inequality holds. So, the possible n's are between some lower bound and upper bound. But since for n=16, the first inequality holds (since 16\u00b3 is way bigger than 15*16\u00b2 + ...), but the upper inequality would not. Therefore, we need to find n such that n\u00b3 is between L(n) and U(n).\n",
      "\n",
      "Alternatively, perhaps n is not too big. Let me check for n=4:\n",
      "\n",
      "4\u00b3 = 64. L(n)=15*16 + 60 +16= 240 + 60 +16=316. 64 < 316, so no. Similarly n=5: 125 vs L(n)=15*25 + 75 +16=375 +75 +16=466. 125 < 466, so still no \n",
      "Extracted:\n",
      "None\n",
      "********************Question:\n",
      "Letters $A, B, C,$ and $D$ represent four different digits from 0, 1, 2, 3, ..., 9. If $\\frac{A+B}{C+D}$ is an integer that is as large as possible, what is the value of $A+B$? \n",
      "Answer:\n",
      "17 \n",
      "Response:\n",
      "Okay, so I need to find four different digits A, B, C, D such that the fraction (A+B)/(C+D) is an integer, and this integer is as large as possible. Then, I have to find the value of A+B. Alright, let's break this down.\n",
      "\n",
      "First, since we're looking for the largest possible integer result of (A+B)/(C+D), I should aim to maximize the numerator (A+B) and minimize the denominator (C+D). But they have to be different digits, so all four digits must be distinct.\n",
      "\n",
      "Let me start by considering the maximum possible value for A+B. The digits go from 0 to 9, and they have to be different. So the largest possible sum for two different digits would be 9 + 8 = 17. Then the next possible is 9 + 7 = 16, and so on. But I also need the denominator C+D to be as small as possible so that when I divide, the result is as large as possible.\n",
      "\n",
      "The smallest possible sum for two different digits is 0 + 1 = 1. But if C+D is 1, then (A+B)/(1) would be A+B, which is already maximized at 17. So if that's possible, then the answer would be 17. But wait, C and D have to be different digits. Let me check: 0 and 1 are different, so C and D could be 0 and 1, making their sum 1. Then (A+B) would be 17, which uses digits 9 and 8. Since all four digits (9,8,0,1) are distinct, that's allowed. Therefore, (A+B)/(C+D) = 17/1 = 17, which is an integer. That's the maximum possible.\n",
      "\n",
      "But wait, is there a case where even if the numerator is slightly less, the denominator is even smaller? The smallest possible denominator is 1, as 0 and 1. But 0 can't be in the denominator with another 0, but since digits are different, 0 and 1 are okay. So denominator 1 is possible. So then the maximum possible value of (A+B)/(C+D) is indeed 17, achieved when A+B is 17 and C+D is 1. Therefore, A+B is 17.\n",
      "\n",
      "But let me double-check if there's any restriction I missed. The problem says A, B, C, D are different digits. So if A and B are 9 and 8, then C and D can't be 9 or 8. But 0 and 1 are available. So yes, that works. Therefore, the answer should be 17. Hmm, but wait, let me check if there's a way to get a higher integer. For example, if (A+B) is 18, but the maximum sum of two different digits is 9 + 8 = 17. So 18 is not possible. Therefore, 17 is indeed the maximum numerator. So the answer must be 17. Let me confirm once again.\n",
      "\n",
      "Alternatively, if someone thought that the denominator can't be 1 because 0 is not allowed in the denominator, but the problem states that C and D are digits, so 0 is allowed as long as it's not the only digit in the denominator. Since C and D are two different digits, if one is 0 and the other is 1, their sum is 1, which is fine. So yes, that's acceptable. Therefore, the maximum possible integer is 17, so A+B is 17. So the answer is \\boxed{17}.\n",
      "To solve the problem, we need to find four distinct digits \\(A, B, C,\\) and \\(D\\) such that the fraction \\(\\frac{A+B}{C+D}\\) is an integer and as large as possible. We then need to determine the value of \\(A+B\\).\n",
      "\n",
      "1. **Maximize the Numerator**: The sum \\(A + B\\) should be as large as possible. The largest distinct digits are 9 and 8, giving \\(A + B = 17\\).\n",
      "\n",
      "2. **Minimize the Denominator**: The sum \\(C + D\\) should be as small as possible. The smallest distinct digits are 0 and 1, giving \\(C + D = 1\\).\n",
      "\n",
      "3. **Check the Fraction**: The fraction \\(\\frac{A+B}{C+D} = \\frac{17}{1} = 17\\), which is an integer.\n",
      "\n",
      "4. **Verify Distinctness**: The digits 9, 8, 0, and 1 are all distinct, satisfying the condition that \\(A, B, C,\\) and \\(D\\) are different.\n",
      "\n",
      "Since \\(\\frac{17}{1} = 17\\) is the largest possible integer value for the fraction with distinct digits, the value of \\(A + B\\) is \\(\\boxed{17}\\).<end_working_out><SOLUTION>17</SOLUTION> \n",
      "Extracted:\n",
      "17\n",
      "********************Question:\n",
      "Let $f(x)=\\int_0^{x} e^{t} (\\cos t+\\sin t)\\, dt$, $g(x)=\\int_0^{x} e^{t} (\\cos t-\\sin t)\\, dt$. \n",
      "\n",
      "For a real number $a$, find:\n",
      "\\[ \\sum_{n=1}^{\\infty} \\frac{e^{2a}}{\\{f^{(n)}(a)\\}^2+\\{g^{(n)}(a)\\}^2}. \\] \n",
      "Answer:\n",
      "1 \n",
      "Response:\n",
      "Okay, let's try to tackle this problem. So, we have two functions, f and g, defined as integrals from 0 to x of some expressions involving e^t, cosine, and sine. Then, we need to find the sum from n=1 to infinity of e^(2a) divided by the sum of the squares of the nth derivatives of f and g evaluated at a. Hmm, that sounds a bit complicated, but let's break it down step by step.\n",
      "\n",
      "First, let's recall what f(x) and g(x) are. They are both integrals from 0 to x. The integrand for f is e^t (cos t + sin t), and for g, it's e^t (cos t - sin t). Maybe if I compute these integrals first, I can find expressions for f and g, and then take their derivatives. Since the derivatives of an integral can be found using the Fundamental Theorem of Calculus, right? If f(x) is the integral from 0 to x of some function h(t) dt, then f\u2019(x) = h(x). So, the first derivative of f at x is just e^x (cos x + sin x). Similarly, the first derivative of g at x is e^x (cos x - sin x). \n",
      "\n",
      "Wait, so f'(x) = e^x (cos x + sin x) and g'(x) = e^x (cos x - sin x). Then, the second derivative of f would be the derivative of f'(x). Let me compute that. Let me denote f'(x) as h(x) = e^x (cos x + sin x). To find h'(x), we can use the product rule. The derivative of e^x is e^x, multiplied by (cos x + sin x) plus e^x multiplied by the derivative of (cos x + sin x). The derivative of cos x is -sin x, and the derivative of sin x is cos x, so altogether that's -sin x + cos x. Therefore, h'(x) = e^x (cos x + sin x) + e^x (-sin x + cos x). Let me compute that:\n",
      "\n",
      "cos x + sin x plus (-sin x + cos x) is cos x + sin x - sin x + cos x, which simplifies to 2 cos x. Therefore, h'(x) = 2 e^x cos x. So, f''(x) = 2 e^x cos x.\n",
      "\n",
      "Similarly, let's compute the second derivative of g. Since g'(x) is e^x (cos x - sin x), let's call this k(x) = e^x (cos x - sin x). The derivative k'(x) is e^x (cos x - sin x) + e^x (-sin x - cos x). Let me check that again. The derivative of cos x is -sin x, derivative of -sin x is -cos x. So yes, the derivative of (cos x - sin x) is (-sin x - cos x). Therefore, k'(x) = e^x (cos x - sin x) + e^x (-sin x - cos x). Let's combine the terms inside the parentheses: cos x - sin x - sin x - cos x = (cos x - cos x) + (-sin x - sin x) = 0 - 2 sin x = -2 sin x. So k'(x) = e^x (-2 sin x). Therefore, g''(x) = -2 e^x sin x.\n",
      "\n",
      "Hmm, interesting. So the first derivatives are f'(x) = e^x (cos x + sin x) and g'(x) = e^x (cos x - sin x). Second derivatives are f''(x) = 2 e^x cos x and g''(x) = -2 e^x sin x. Let me see if there's a pattern here. Maybe the nth derivatives follow some pattern.\n",
      "\n",
      "Alternatively, maybe there's a relationship between f and g's derivatives. Let me compute the third derivatives. Let's take f''(x) = 2 e^x cos x. The third derivative f'''(x) is the derivative of that. So derivative of 2 e^x cos x is 2 [e^x cos x - e^x sin x] = 2 e^x (cos x - sin x). Similarly, g''(x) is -2 e^x sin x, so the third derivative g'''(x) is the derivative of that, which is -2 [e^x sin x + e^x cos x] = -2 e^x (sin x + cos x). \n",
      "\n",
      "Wait a minute, so f'''(x) = 2 e^x (cos x - sin x) and g'''(x) = -2 e^x (sin x + cos x). Let me note these down.\n",
      "\n",
      "Looking at the first few derivatives, maybe there's some periodicity or a recurrence relation here. Let's think. The derivatives of f and g might be related to the original functions or their derivatives.\n",
      "\n",
      "Alternatively, maybe we can consider the first derivatives f'(x) and g'(x). Let me note that:\n",
      "\n",
      "f'(x) = e^x (cos x + sin x)\n",
      "g'(x) = e^x (cos x - sin x)\n",
      "\n",
      "If I square these and add them, maybe something cancels out? Let's check:\n",
      "\n",
      "[ f'(x) ]\u00b2 + [ g'(x) ]\u00b2 = [ e^{2x} (cos x + sin x)^2 + e^{2x} (cos x - sin x)^2 ]\n",
      "\n",
      "Let me compute that. Factor out e^{2x}:\n",
      "\n",
      "e^{2x} [ (cos x + sin x)^2 + (cos x - sin x)^2 ]\n",
      "\n",
      "Expanding both squares:\n",
      "\n",
      "First, (cos x + sin x)^2 = cos\u00b2x + 2 sin x cos x + sin\u00b2x\n",
      "\n",
      "Similarly, (cos x - sin x)^2 = cos\u00b2x - 2 sin x cos x + sin\u00b2x\n",
      "\n",
      "Adding them together:\n",
      "\n",
      "[cos\u00b2x + 2 sin x cos x + sin\u00b2x] + [cos\u00b2x - 2 sin x cos x + sin\u00b2x] = 2 cos\u00b2x + 2 sin\u00b2x = 2 (cos\u00b2x + sin\u00b2x) = 2*1 = 2\n",
      "\n",
      "So, [ f'(x) ]\u00b2 + [ g'(x) ]\u00b2 = e^{2x} * 2\n",
      "\n",
      "Wait, so for n=1, {f^{(1)}(a)}^2 + {g^{(1)}(a)}^2 = 2 e^{2a}\n",
      "\n",
      "Therefore, the term in the sum for n=1 would be e^{2a} divided by that, which is e^{2a}/(2 e^{2a}) = 1/2.\n",
      "\n",
      "Wait, but the problem says the sum from n=1 to infinity of e^{2a}/[ (f^{(n)}(a))\u00b2 + (g^{(n)}(a))\u00b2 ].\n",
      "\n",
      "But from n=1, we have 1/2, and maybe for higher n, similar things happen?\n",
      "\n",
      "Wait, but let me check for n=2. Let's compute [f''(a)]\u00b2 + [g''(a)]\u00b2. f''(x) is 2 e^x cos x, so squared is 4 e^{2x} cos\u00b2x. Similarly, g''(x) is -2 e^x sin x, squared is 4 e^{2x} sin\u00b2x. Adding them together gives 4 e^{2x} (cos\u00b2x + sin\u00b2x) = 4 e^{2x}. Therefore, for n=2, the term is e^{2a}/(4 e^{2a}) = 1/4.\n",
      "\n",
      "Similarly, for n=3, let's compute [f'''(a)]\u00b2 + [g'''(a)]\u00b2. f'''(x) was 2 e^x (cos x - sin x), so squared is 4 e^{2x} (cos x - sin x)^2. g'''(x) was -2 e^x (sin x + cos x), squared is 4 e^{2x} (sin x + cos x)^2. Adding them together: 4 e^{2x} [ (cos x - sin x)^2 + (sin x + cos x)^2 ].\n",
      "\n",
      "Let me compute that expression inside the brackets. As before, expanding both squares:\n",
      "\n",
      "(cos x - sin x)^2 = cos\u00b2x - 2 \n",
      "Extracted:\n",
      "None\n",
      "********************Question:\n",
      "How many distinct ordered pairs of positive integers $(m,n)$ are there so that the sum of the reciprocals of $m$ and $n$ is $\\frac14$? \n",
      "Answer:\n",
      "5 \n",
      "Response:\n",
      "Okay, so I need to find the number of distinct ordered pairs of positive integers (m, n) such that the sum of their reciprocals is 1/4. Let me start by writing down the equation based on the problem statement.\n",
      "\n",
      "The equation would be 1/m + 1/n = 1/4. Alright, so I need to solve this equation for positive integers m and n, and then count all the distinct ordered pairs.\n",
      "\n",
      "First, maybe I can combine the fractions on the left side. To add 1/m and 1/n, I need a common denominator, which would be m*n. So:\n",
      "\n",
      "(n + m) / (m*n) = 1/4.\n",
      "\n",
      "Now, since the fractions are equal, their cross products should be equal. That is:\n",
      "\n",
      "4(n + m) = m*n * 1.\n",
      "\n",
      "So, simplifying that, we get:\n",
      "\n",
      "m*n - 4m - 4n = 0.\n",
      "\n",
      "Hmm, this looks a bit complicated. Maybe I can rearrange terms to make it factorable. I remember sometimes adding a constant to both sides helps factor equations. Let me think... If I add 16 to both sides, does that help?\n",
      "\n",
      "m*n - 4m - 4n + 16 = 16.\n",
      "\n",
      "Now, the left side should factor into (m - 4)(n - 4). Let's check that. Expanding (m - 4)(n - 4) gives m*n -4m -4n +16. Yes, exactly! Perfect. So the equation becomes:\n",
      "\n",
      "(m - 4)(n - 4) = 16.\n",
      "\n",
      "So now, the problem reduces to finding the number of ordered pairs (a, b) where a and b are positive integers (since m and n are positive integers, m - 4 and n - 4 must be integers greater than or equal to 1 if m and n are greater than 4. Wait, but actually, m and n could be 4 or less. Wait, if m is 4, then m - 4 is 0, but then the product (m-4)(n-4) would be 0, which isn't 16. Therefore, m and n must be greater than 4. Wait, let me check that.\n",
      "\n",
      "If m is 1, then 1/m is 1, which is way larger than 1/4, so m and n can't be too small. Let me see. Suppose m is 1: 1 + 1/n = 1/4. Then 1/n = -3/4, which isn't possible because reciprocals of positive integers are positive. So m and n have to be greater than 4? Wait, let's check m=5. Then 1/5 + 1/n = 1/4. So 1/n = 1/4 - 1/5 = 5/20 - 4/20 = 1/20, so n=20. So m=5, n=20 is a solution. Similarly, m=6: 1/6 + 1/n = 1/4. Then 1/n = 1/4 - 1/6 = 3/12 - 2/12 = 1/12, so n=12. So that works. So m can be as low as 5? Wait, but in our transformed equation, (m-4)(n-4) =16. So m-4 and n-4 are positive integers, because m and n have to be at least 5? Wait, let me check m=4: If m=4, then (4-4)(n-4)=0* something =0\u226016. So m and n must be at least 5. So m-4 and n-4 are positive integers. Therefore, the number of ordered pairs (m, n) is equal to the number of ordered pairs (a, b) where a*b=16, and a and b are positive integers. Each such pair (a, b) corresponds to (m, n)=(a+4, b+4). Since ordered pairs, (a,b) and (b,a) are different unless a=b.\n",
      "\n",
      "Therefore, I need to find the number of positive divisors of 16, and then since each divisor a pairs with 16/a, the number of ordered pairs is equal to the number of divisors of 16.\n",
      "\n",
      "Wait, but 16 is 2^4, so the number of positive divisors is 4+1=5. Therefore, there are 5 divisors, which would lead to 5 ordered pairs. Wait, but hold on, for each divisor a, there is a corresponding divisor b=16/a, so the number of ordered pairs is equal to the number of divisors. For example, divisors of 16 are 1,2,4,8,16. So the ordered pairs (a,b) would be (1,16), (2,8), (4,4), (8,2), (16,1). So that's 5 ordered pairs. Therefore, the answer would be 5? But wait, but let me check with actual values.\n",
      "\n",
      "If a=1, then m=5 and n=20. Similarly, a=2: m=6, n=12. a=4: m=8, n=8. a=8: m=12, n=6. a=16: m=20, n=5. So indeed, those are 5 ordered pairs. But wait, the problem says \"distinct ordered pairs\". Are there any duplicates here? For example, (5,20) and (20,5) are distinct ordered pairs, so they count separately. Similarly, (6,12) and (12,6). The pair (8,8) is same when reversed. So total number is 5, which is the number of divisors. Therefore, the answer is 5? But wait, let me check if there are other possibilities. Wait, maybe m or n can be less than 5?\n",
      "\n",
      "Wait, earlier when I considered m=5, but what if m is smaller? Let's check m=3. Then 1/3 + 1/n =1/4. Then 1/n =1/4 -1/3= -1/12, which is impossible. Similarly, m=2: 1/2 + 1/n=1/4 \u2192 1/n = -1/4, impossible. m=1: same problem. Similarly for m=4: 1/4 +1/n =1/4 \u2192 1/n=0, which isn't possible. m=5 is the smallest possible. So yes, m and n have to be at least 5, so that the corresponding a and b are positive integers. Therefore, there are 5 ordered pairs. Wait, but hold on, 16 has 5 positive divisors, but the number of ordered pairs is equal to the number of divisors, because for each divisor a, there's a corresponding divisor 16/a. So the number of ordered pairs is\u03c4(16), the number of positive divisors of 16. Since \u03c4(16)=5, the answer is 5. Therefore, the answer is 5.\n",
      "\n",
      "Wait, but wait a second. Let me think again. Let me verify with another example. Suppose instead of 16, we had a number with more divisors. For example, if (m-4)(n-4)=12, which has divisors 1,2,3,4,6,12. Then the ordered pairs would be (1,12),(2,6),(3,4),(4,3),(6,2),(12,1). So 6 ordered pairs, which is \u03c4(12)=6. So yes, for each divisor, you get an ordered pair. Therefore, in our original problem, since \u03c4(16)=5, the answer should be 5. Therefore, the number of ordered pairs is 5. So I think that's the answer.\n",
      "\n",
      "But let me check once more. Let's list all the pairs:\n",
      "\n",
      "For (a,b) where a*b=16:\n",
      "\n",
      "1*16, so m=5, n=20\n",
      "\n",
      "2*8, m=6, n=12\n",
      "\n",
      "4*4, m=8, n=8\n",
      "\n",
      "8*2, m=12, n=6\n",
      "\n",
      "16*1, m=20, n=5\n",
      "\n",
      "So \n",
      "Extracted:\n",
      "None\n",
      "********************Question:\n",
      "Suppose that $n$ persons meet in a meeting, and that each of the persons is acquainted with exactly $8$ others. Any two acquainted persons have exactly $4$ common acquaintances, and any two non-acquainted persons have exactly $2$ common acquaintances. Find all possible values of $n$. \n",
      "Answer:\n",
      "21 \n",
      "Response:\n",
      "Okay, let's try to tackle this problem. So, we have n people in a meeting. Each person knows exactly 8 others. The conditions are that any two acquaintances have exactly 4 common acquaintances, and any two non-acquainted people have exactly 2 common acquaintances. We need to find all possible values of n.\n",
      "\n",
      "Hmm, this seems like a problem from graph theory. Let me think. If we model the meeting as a graph where each person is a vertex and each acquaintance is an edge, then the problem states that it's a 8-regular graph (each vertex has degree 8). \n",
      "\n",
      "The first condition: any two adjacent vertices (acquainted people) have exactly 4 common neighbors. The second condition: any two non-adjacent vertices have exactly 2 common neighbors.\n",
      "\n",
      "I remember that in strongly regular graphs, these parameters are defined. Let me recall the definition. A strongly regular graph with parameters (n, k, \u03bb, \u03bc) is a graph with n vertices, each vertex has degree k, every two adjacent vertices have \u03bb common neighbors, and every two non-adjacent vertices have \u03bc common neighbors. \n",
      "\n",
      "So in our case, the parameters would be (n, 8, 4, 2). So the problem is asking for all possible n such that a strongly regular graph with these parameters exists.\n",
      "\n",
      "Now, there's a formula related to strongly regular graphs. Let me remember. The formula connects the parameters. The equation is:\n",
      "\n",
      "k(k - \u03bb - 1) = (n - k - 1)\u03bc\n",
      "\n",
      "Is that right? Let me check. Let me think: For a strongly regular graph, the number of edges from a vertex to its neighbors and non-neighbors should satisfy some relation. \n",
      "\n",
      "Yes, the formula is:\n",
      "\n",
      "k(k - \u03bb - 1) = (n - k - 1)\u03bc\n",
      "\n",
      "So plugging in the known values here:\n",
      "\n",
      "k = 8, \u03bb = 4, \u03bc = 2.\n",
      "\n",
      "So substituting:\n",
      "\n",
      "8(8 - 4 - 1) = (n - 8 - 1) * 2\n",
      "\n",
      "Simplify the left side: 8*(3) = 24\n",
      "\n",
      "Right side: (n - 9)*2\n",
      "\n",
      "So 24 = 2(n - 9) => divide both sides by 2: 12 = n - 9 => n = 21.\n",
      "\n",
      "So n should be 21. But wait, the problem says \"find all possible values of n\". Is 21 the only solution? Let me check if there are other possibilities or if this formula gives the unique solution.\n",
      "\n",
      "The formula for strongly regular graphs is derived from counting the number of walks of length 2 between two vertices. For two adjacent vertices, the number of common neighbors is \u03bb, and for non-adjacent, it's \u03bc. The equation comes from considering the total number of edges incident to the neighbors of a vertex.\n",
      "\n",
      "So since the equation gives n=21, that should be the only solution. But let me confirm if such a strongly regular graph actually exists. The parameters (21, 8, 4, 2) are known? Wait, I think the complement of a strongly regular graph is also a strongly regular graph. The complement parameters would be (n, n - k - 1, n - 2k + \u03bc - 2, n - 2k + \u03bb). Let me check that.\n",
      "\n",
      "Original parameters: (n, k, \u03bb, \u03bc). The complement graph would have parameters (n, n - k - 1, n - 2k + \u03bc - 2, n - 2k + \u03bb). Let's compute that. For our case, n - 8 - 1 = 21 - 9 = 12. Then the complement would have parameters (21, 12, 21 - 16 + 2 - 2, 21 - 16 + 4) => wait let me compute step by step.\n",
      "\n",
      "Original \u03bb is 4, \u03bc is 2.\n",
      "\n",
      "Complement parameters: (n, n - k - 1, n - 2k + \u03bc - 2, n - 2k + \u03bb)\n",
      "\n",
      "So substituting:\n",
      "\n",
      "n = 21, k =8.\n",
      "\n",
      "n - 2k + \u03bc - 2 = 21 - 16 + 2 - 2 = 5\n",
      "\n",
      "n - 2k + \u03bb = 21 - 16 + 4 = 9\n",
      "\n",
      "So the complement would be (21, 12, 5, 9). So there exists a strongly regular graph with parameters (21, 12, 5, 9), which is the complement of our original graph. Therefore, our original parameters (21, 8, 4, 2) are valid, and hence n=21 is possible.\n",
      "\n",
      "But does such a graph actually exist? Are there any known strongly regular graphs with these parameters?\n",
      "\n",
      "Wait, I think the complement of the triangular graph. Wait, the triangular graph T(7) is a strongly regular graph with parameters (21, 15, 10, 6), which is different. Hmm. Wait, maybe the complement of the lattice graph. Let me recall.\n",
      "\n",
      "Alternatively, maybe the parameters (21, 8, 4, 2) are known. Let me think. The strongly regular graph with parameters (21, 8, 3, 2) exists, called the complement of the triangular graph T(8)? Maybe not. Alternatively, maybe the graph is related to a finite geometry. For example, the symplectic geometry over GF(4), but I might be misremembering.\n",
      "\n",
      "Alternatively, perhaps checking the formula again. Wait, the equation we used gives n=21. But maybe there's more constraints. For example, the eigenvalues of a strongly regular graph must be integers, and other conditions.\n",
      "\n",
      "Let me check that. Let me recall that for a strongly regular graph, the eigenvalues other than k can be calculated using the formula:\n",
      "\n",
      "\u03b8 = [(-\u03bb - \u03bc + sqrt((\u03bb - \u03bc)^2 + 4(k - \u03bc)))/2]\n",
      "\n",
      "Wait, no, the eigenvalues are given by:\n",
      "\n",
      "For a strongly regular graph with parameters (n, k, \u03bb, \u03bc), the eigenvalues are:\n",
      "\n",
      "[ ( -1 + sqrt(4k - 3\u03bc - 1) ) / 2 ] and [ ( -1 - sqrt(4k - 3\u03bc - 1) ) / 2 ]\n",
      "\n",
      "Wait, maybe I should use another formula. Let me check again.\n",
      "\n",
      "The eigenvalues other than k can be found using the following equations. Let\u2019s denote the eigenvalues as r and s. Then:\n",
      "\n",
      "r + s = - (n - k - 1) / k * \u03bc ? Wait, maybe I need to use the relation between the parameters and the eigenvalues.\n",
      "\n",
      "Alternatively, the formula is derived from the adjacency matrix A of the strongly regular graph. The adjacency matrix satisfies the equation:\n",
      "\n",
      "A^2 = kI + \u03bbA + \u03bc(J - I - A),\n",
      "\n",
      "where J is the all-ones matrix. Therefore, rearranged:\n",
      "\n",
      "A^2 = (k - \u03bc)I + (\u03bb - \u03bc)A + \u03bcJ.\n",
      "\n",
      "Then, if we consider the eigenvalues of J, which is n (with eigenvector the all-ones vector) and 0 (for other eigenvectors). Since A is a strongly regular graph, it is a real symmetric matrix, so it has all real eigenvalues. Let\u2019s denote the eigenvalues of A as k (with multiplicity 1, corresponding to the all-ones vector) and other eigenvalues r and s (with multiplicities f and g).\n",
      "\n",
      "Let me consider that when we multiply A^2 by a eigenvector corresponding to eigenvalue r, we get r^2 times that eigenvector. On the other hand, the equation A^2 = (k - \u03bc)I + (\u03bb - \u03bc)A + \u03bcJ. So, if the eigenvector is orthogonal to the all-ones vector (since J has rank 1), then J acts as zero on that eigenvector. Therefore, A^2 = (k - \u03bc)I + (\u03bb - \u03bc)A. So, applying to the eigenvector with eigenvalue r:\n",
      "\n",
      "r^2 = (k - \u03bc) + (\u03bb - \u03bc)r.\n",
      "\n",
      "Similarly for s:\n",
      "\n",
      "s^2 = (k - \u03bc) + (\u03bb - \u03bc)s.\n",
      "\n",
      "So this gives us a quadratic equation.\n",
      "\n",
      "Therefore, substituting our values: k=8, \u03bb=4, \u03bc=2.\n",
      "\n",
      "So the equation is:\n",
      "\n",
      "x^2 = (8 - 2) + (4 - 2)x => x^2 =  \n",
      "Extracted:\n",
      "None\n",
      "********************Question:\n",
      "On rectangular coordinates, point $A = (1,2)$, $B = (3,4)$. $P = (a, 0)$ is on $x$-axis. Given that $P$ is chosen such that $AP + PB$ is minimized, compute $60a$. \n",
      "Answer:\n",
      "100 \n",
      "Response:\n",
      "Okay, so I need to find the point P on the x-axis such that the total distance from A to P to B is minimized. Then compute 60a where a is the x-coordinate of P. Hmm, let me think.\n",
      "\n",
      "First, the points given are A(1,2) and B(3,4). P is somewhere on the x-axis, so its coordinates are (a, 0). The problem is to minimize AP + PB. This reminds me of the reflection principle in geometry, where to find the shortest path that reflects off a line, you reflect one of the points over the line and then find the straight line between the reflected point and the other original point. The intersection of that line with the mirror (in this case, the x-axis) gives the optimal point P.\n",
      "\n",
      "So maybe I should reflect either A or B over the x-axis. Since P is on the x-axis, reflecting one of the points over the x-axis would make the path AP + PB equivalent to the straight line distance from the reflected point to the other point, passing through P. Let me confirm that. If I reflect point B over the x-axis, its reflection would be B'(3,-4). Then the distance from A to P to B would be the same as the distance from A to P to B, but since P is on the x-axis, reflecting B to B' would make AP + PB = AP + PB'. Wait, no, if you reflect over the x-axis, then PB is equal to PB' because P is on the x-axis. Wait, no, if you have P on the x-axis, then the distance from P to B is the same as from P to B' only if B is reflected over x-axis. Wait, actually, the reflection would make PB equal to PB' only if P is on the mirror line. So reflecting B over x-axis gives B'(3,-4). Then, the path A to P to B is equivalent in length to the path A to P to B', but since P is on the mirror, the minimal path from A to B via the mirror is the straight line from A to B' intersecting the mirror at P. Therefore, the point P is the intersection point of the line AB' with the x-axis. Then, I can find the equation of the line connecting A(1,2) and B'(3,-4), find where it crosses the x-axis (y=0), that will be the P point, and then compute 60a.\n",
      "\n",
      "Yes, that seems like the right approach. Let me check again. If I reflect B over x-axis to get B'(3,-4), then the minimal path from A to B via the x-axis is achieved when P is the intersection point of AB' with the x-axis. Because the reflection trick essentially makes the path A-P-B into a straight line when you reflect one point. That makes sense. So by reflecting B, the shortest path that touches the x-axis is the straight line from A to B', and where that line crosses the x-axis is the optimal P.\n",
      "\n",
      "So now, let's find the equation of the line connecting A(1,2) and B'(3,-4). First, find the slope. The slope m is (y2 - y1)/(x2 - x1) = (-4 - 2)/(3 - 1) = (-6)/2 = -3. So the slope is -3. Then using point-slope form, let's use point A(1,2). So the equation is y - 2 = -3(x - 1). Simplifying, y - 2 = -3x + 3, so y = -3x + 5.\n",
      "\n",
      "Now, find where this line crosses the x-axis. The x-axis is where y = 0. So set y to 0 and solve for x:\n",
      "\n",
      "0 = -3x + 5  \n",
      "3x = 5  \n",
      "x = 5/3.\n",
      "\n",
      "Therefore, point P is at (5/3, 0), so a = 5/3. Then 60a = 60*(5/3) = 100. So the answer is 100. Let me just verify if that's correct.\n",
      "\n",
      "Alternatively, maybe I should have reflected point A instead? Wait, no. If we are reflecting over the x-axis to find the shortest path that touches the x-axis, the reflection is usually the other point. For example, if you have a point on one side of a mirror and you want to go to another point on the other side, you reflect one of them. Wait, in this case, both A and B are above the x-axis. So reflecting one of them over x-axis would make the path go through the mirror. Let me confirm again. Let's think of it as light reflecting off the mirror (x-axis) from A to B. The law of reflection states that the angle of incidence equals the angle of reflection. The reflection method would involve reflecting one point, say B, over the mirror (x-axis) to B', then the path A to P to B is equivalent to A to P to B', with P on the mirror, and the shortest path is the straight line from A to B' which intersects the mirror at P. That's correct. So reflecting B over x-axis to get B'(3,-4), then connecting A(1,2) to B'(3,-4), find intersection with x-axis. Which we did as (5/3, 0). So a = 5/3, 60a = 100. That seems right. Let me check the calculation again.\n",
      "\n",
      "Equation of line from (1,2) to (3,-4):\n",
      "\n",
      "Slope m = (-4 - 2)/(3 - 1) = -6/2 = -3. Correct.\n",
      "\n",
      "Equation: y - 2 = -3(x - 1). So y = -3x + 3 + 2 = -3x + 5. Correct.\n",
      "\n",
      "Set y=0: 0 = -3x +5 => x = 5/3. Correct.\n",
      "\n",
      "Yes, so 5/3 times 60 is 100. Therefore, the answer should be 100.\n",
      "\n",
      "But just to be thorough, let's consider an alternative method, maybe calculus, to confirm.\n",
      "\n",
      "Let\u2019s denote P as (a, 0). The distance AP is sqrt[(a - 1)^2 + (0 - 2)^2] = sqrt[(a -1)^2 + 4]. The distance PB is sqrt[(3 - a)^2 + (4 - 0)^2] = sqrt[(3 - a)^2 + 16]. We need to minimize the sum f(a) = sqrt((a-1)^2 + 4) + sqrt((3 - a)^2 + 16).\n",
      "\n",
      "To find the minimum, take the derivative f\u2019(a), set it to zero.\n",
      "\n",
      "First, compute f\u2019(a):\n",
      "\n",
      "d/da [sqrt((a -1)^2 + 4)] = [2(a - 1)] / [2 sqrt((a -1)^2 + 4)] = (a - 1)/sqrt((a -1)^2 + 4)\n",
      "\n",
      "Similarly, d/da [sqrt((3 - a)^2 + 16)] = [2(3 - a)(-1)] / [2 sqrt((3 - a)^2 + 16)] = (- (3 - a))/sqrt((3 - a)^2 + 16)\n",
      "\n",
      "Therefore, f\u2019(a) = (a - 1)/sqrt((a -1)^2 + 4) - (3 - a)/sqrt((3 - a)^2 + 16)\n",
      "\n",
      "Set f\u2019(a) = 0:\n",
      "\n",
      "(a - 1)/sqrt((a -1)^2 + 4) - (3 - a)/sqrt((3 - a)^2 + 16) = 0\n",
      "\n",
      "Which implies:\n",
      "\n",
      "(a - 1)/sqrt((a -1)^2 + 4) = (3 - a)/sqrt((3 - a)^2 + 16)\n",
      "\n",
      "Let\u2019s denote t = a - 1. Then 3 - a = 2 - t. Let me see:\n",
      "\n",
      "Wait maybe not necessary. Let me square both sides to eliminate the square roots. But squaring both sides may introduce extraneous solutions, so we need to check later.\n",
      "\n",
      "[(a - 1)/sqrt((a -1)^2 + 4)]^2 = [(3 - a)/sqrt((3 - a)^2 + 16)]^2\n",
      "\n",
      "Simplifies to:\n",
      "\n",
      "(a - 1)^2 / [(a -1)^2 + 4] = (3 - a)^2 / [(3 - a)^2 \n",
      "Extracted:\n",
      "None\n",
      "********************Question:\n",
      "A circle is inscribed in a regular octagon with area $2024$. A second regular octagon is inscribed in the circle, and its area can be expressed as $a + b\\sqrt{c}$, where $a$, $b$, $c$ are integers and $c$ is square-free. Compute $a + b + c$. \n",
      "Answer:\n",
      "1520 \n",
      "Response:\n",
      "Okay, so I need to solve this problem where there's a regular octagon with area 2024, and then a circle is inscribed in it. Then another regular octagon is inscribed in that circle, and I need to find its area in the form a + b\u221ac and compute a + b + c. Alright, let's break this down step by step.\n",
      "\n",
      "First, I remember that a regular octagon can be divided into 8 isosceles triangles, each with a vertex angle of 360/8 = 45 degrees. The area of a regular octagon can be calculated if we know the side length. The formula for the area of a regular octagon with side length 's' is 2(1 + \u221a2)s\u00b2. Wait, but in this problem, the first octagon has area 2024, so maybe I can find its side length first?\n",
      "\n",
      "But actually, maybe I don't need the side length directly. Since there's a circle inscribed in the first octagon, that circle is the incircle (the largest circle that fits inside the octagon, touching all its sides). The radius of this incircle would be related to the side length of the octagon. Then, the second octagon is inscribed in this circle, so its vertices lie on the circle, meaning the circle is the circumcircle of the second octagon. Therefore, the radius of the incircle of the first octagon is the circumradius of the second octagon.\n",
      "\n",
      "So, maybe I need to find the relationship between the inradius and the circumradius of a regular octagon. Let me recall the formulas for the inradius (r) and circumradius (R) of a regular octagon with side length 's'.\n",
      "\n",
      "For a regular polygon with n sides, the inradius (apothem) is given by (s / 2) * cot(\u03c0/n), and the circumradius is given by (s / 2) * csc(\u03c0/n). Since n = 8 for an octagon.\n",
      "\n",
      "So, for the first octagon:\n",
      "\n",
      "Inradius r1 = (s1 / 2) * cot(\u03c0/8)\n",
      "Circumradius R1 = (s1 / 2) * csc(\u03c0/8)\n",
      "\n",
      "But since the second octagon is inscribed in the first incircle, its circumradius R2 = r1.\n",
      "\n",
      "Therefore, R2 = r1 = (s1 / 2) * cot(\u03c0/8)\n",
      "\n",
      "Now, the area of the second octagon (let's call it A2) will be 2(1 + \u221a2) * (R2 * 2 / csc(\u03c0/8))\u00b2. Wait, maybe I need to express the side length of the second octagon in terms of R2.\n",
      "\n",
      "Alternatively, since the area of a regular octagon can also be expressed in terms of its circumradius. Let me check that formula.\n",
      "\n",
      "Alternatively, since for any regular polygon, the area can be given by (1/2) * perimeter * apothem. For the first octagon, area A1 = 2024 = (1/2) * perimeter * r1. The perimeter is 8*s1. So:\n",
      "\n",
      "2024 = (1/2) * 8*s1 * r1 => 2024 = 4*s1*r1 => s1*r1 = 506.\n",
      "\n",
      "But we also have that r1 = (s1 / 2) * cot(\u03c0/8). Therefore:\n",
      "\n",
      "s1 * (s1 / 2) * cot(\u03c0/8) = 506 => (s1\u00b2 / 2) * cot(\u03c0/8) = 506 => s1\u00b2 = (506 * 2) / cot(\u03c0/8) = 1012 * tan(\u03c0/8)\n",
      "\n",
      "But maybe this is getting a bit complicated. Let me compute tan(\u03c0/8) first. Since \u03c0/8 is 22.5 degrees.\n",
      "\n",
      "I know that tan(\u03c0/8) = \u221a2 - 1. Wait, let me verify. Using the identity tan(\u03b8/2) = (1 - cos\u03b8)/sin\u03b8. Let's take \u03b8 = \u03c0/4, so tan(\u03c0/8) = (1 - cos(\u03c0/4))/sin(\u03c0/4) = (1 - \u221a2/2)/(\u221a2/2) = [ (2 - \u221a2)/2 ] / (\u221a2/2 ) = (2 - \u221a2)/\u221a2 = 2/\u221a2 - \u221a2/\u221a2 = \u221a2 - 1. Yes, so tan(\u03c0/8) is \u221a2 - 1. So that's good.\n",
      "\n",
      "So s1\u00b2 = 1012 * (\u221a2 - 1). Therefore, s1 = sqrt(1012*(\u221a2 - 1)). Hmm, but maybe I don't need s1 directly. Let's see.\n",
      "\n",
      "Alternatively, since we have the circumradius R2 = r1, and we can relate R2 to s1. From earlier, R1 = (s1 / 2) * csc(\u03c0/8). Therefore, since csc(\u03c0/8) is 1/sin(\u03c0/8). sin(\u03c0/8) is sin(22.5\u00b0). Let me compute that. sin(\u03c0/8) can be expressed as sqrt(2 - \u221a2)/2. Let me confirm. Using the half-angle formula: sin(\u03b8/2) = sqrt((1 - cos\u03b8)/2). Let \u03b8 = \u03c0/4, so sin(\u03c0/8) = sqrt((1 - cos(\u03c0/4))/2) = sqrt( (1 - \u221a2/2)/2 ) = sqrt( (2 - \u221a2)/4 ) = sqrt(2 - \u221a2)/2. Yes. So sin(\u03c0/8) = \u221a(2 - \u221a2)/2. Therefore, csc(\u03c0/8) is 2 / \u221a(2 - \u221a2). Rationalizing the denominator:\n",
      "\n",
      "Multiply numerator and denominator by \u221a(2 + \u221a2):\n",
      "\n",
      "[2 * \u221a(2 + \u221a2)] / [\u221a(2 - \u221a2) * \u221a(2 + \u221a2)] = [2 * \u221a(2 + \u221a2)] / \u221a( (2)^2 - (\u221a2)^2 ) = [2 * \u221a(2 + \u221a2)] / \u221a(4 - 2) = [2 * \u221a(2 + \u221a2)] / \u221a2 = [2 / \u221a2] * \u221a(2 + \u221a2) = \u221a2 * \u221a(2 + \u221a2) = \u221a[2*(2 + \u221a2)] = \u221a(4 + 2\u221a2)\n",
      "\n",
      "Therefore, csc(\u03c0/8) = \u221a(4 + 2\u221a2). Therefore, the circumradius R1 = (s1 / 2) * \u221a(4 + 2\u221a2). Wait, but R1 is the circumradius of the first octagon, which is equal to the inradius of the first octagon? No, wait, R2 is the inradius of the first octagon. Wait, let me re-express.\n",
      "\n",
      "Earlier, we had R2 = r1 = (s1 / 2) * cot(\u03c0/8). And since cot(\u03c0/8) is 1/tan(\u03c0/8) = 1/(\u221a2 - 1) = (\u221a2 + 1)/[(\u221a2 - 1)(\u221a2 + 1)] = (\u221a2 + 1)/1 = \u221a2 + 1.\n",
      "\n",
      "Therefore, r1 = (s1 / 2) * (\u221a2 + 1). Therefore, R2 = (s1 / 2) * (\u221a2 + 1). So R2 is the circumradius of the second octagon.\n",
      "\n",
      "But we also have that the area of the first octagon is 2024. The area formula for the first octagon is 2(1 + \u221a2)s1\u00b2. Let me check that again. Wait, for a regular octagon, area can be calculated as 2(1 + \u221a2)s\u00b2 where s is the side length. Yes, that's correct.\n",
      "\n",
      "So, A1 = 2(1 + \u221a2)s1\u00b2 = 2024. Therefore, s1\u00b2 = 2024 / [2(1 + \u221a2)] \n",
      "Extracted:\n",
      "None\n",
      "********************Question:\n",
      "A circle centered at $O$ has radius $1$ and contains the point $A$. Segment $AB$ is tangent to the circle at $A$ and $\\angle AOB = \\theta$. If point $C$ lies on $\\overline{OA}$ and $\\overline{BC}$ bisects $\\angle ABO$, find the value of $OC$. The original answer is in the form \\frac{k}{1+m\\sin(\\theta)}, please give the value of k + m. \n",
      "Answer:\n",
      "2 \n",
      "Response:\n",
      "Okay, let's see. I need to find the length OC in a circle problem. The circle has center O and radius 1, so OA is 1. AB is tangent to the circle at A, which means OA is perpendicular to AB. So, angle OAB is 90 degrees. Then, angle AOB is given as \u03b8. There's a point C on OA such that BC bisects angle ABO. I need to find OC in terms of k/(1 + m sin\u03b8) and then find k + m.\n",
      "\n",
      "First, let me sketch the diagram. There's a circle with center O, point A on the circle. AB is tangent at A, so OA is perpendicular to AB. Then OB is a segment from the center to point B on the tangent line. The angle at O, angle AOB, is \u03b8. Now, point C is somewhere on OA, and BC is the angle bisector of angle ABO.\n",
      "\n",
      "So, maybe I can use the Angle Bisector Theorem here. The Angle Bisector Theorem states that the ratio of the two segments created by the bisector on the opposite side is equal to the ratio of the adjacent sides.\n",
      "\n",
      "In triangle ABO, BC is the angle bisector of angle ABO. So, according to the theorem, the ratio of AB to BO should be equal to the ratio of AC to CO.\n",
      "\n",
      "Wait, let me confirm. The Angle Bisector Theorem says that if a bisector of an angle in a triangle divides the opposite side into segments proportional to the adjacent sides. In this case, angle bisector BC divides OA into segments AC and CO. So, the ratio AC/CO = AB/BO.\n",
      "\n",
      "Yes, that seems right. So, AC/CO = AB/BO.\n",
      "\n",
      "So, if I can find AB and BO, then I can set up the ratio and solve for OC.\n",
      "\n",
      "First, let's find AB. Since OA is perpendicular to AB, triangle OAB is a right triangle at A. We know angle AOB is \u03b8, and OA is 1. In triangle OAB, OA = 1, angle at O is \u03b8, so we can find AB and BO.\n",
      "\n",
      "In triangle OAB:\n",
      "\n",
      "sin\u03b8 = opposite/hypotenuse = AB/OB\n",
      "\n",
      "Wait, angle at O is \u03b8. The sides: OA is opposite angle B, AB is opposite angle O. Wait, maybe better to use trigonometric ratios.\n",
      "\n",
      "In triangle OAB, right-angled at A:\n",
      "\n",
      "sin\u03b8 = opposite/hypotenuse = OA/OB. Wait, OA is adjacent to angle \u03b8. Wait, angle at O is \u03b8. So, adjacent side is OA (length 1), hypotenuse is OB. Therefore, cos\u03b8 = adjacent/hypotenuse = OA/OB. Therefore, cos\u03b8 = 1/OB => OB = 1/cos\u03b8.\n",
      "\n",
      "Similarly, sin\u03b8 = opposite/hypotenuse = AB/OB => AB = OB sin\u03b8 = (1/cos\u03b8) * sin\u03b8 = tan\u03b8. So AB = tan\u03b8, and OB = 1/cos\u03b8.\n",
      "\n",
      "So now, according to the Angle Bisector Theorem:\n",
      "\n",
      "AC / CO = AB / BO = tan\u03b8 / (1/cos\u03b8) ) = tan\u03b8 * cos\u03b8 = (sin\u03b8 / cos\u03b8) * cos\u03b8 = sin\u03b8.\n",
      "\n",
      "Therefore, AC / CO = sin\u03b8.\n",
      "\n",
      "But since C is on OA, AC + CO = OA = 1. Let me denote OC as x. Then AC = OA - OC = 1 - x. So:\n",
      "\n",
      "(1 - x)/x = sin\u03b8\n",
      "\n",
      "Therefore, 1 - x = x sin\u03b8\n",
      "\n",
      "So, 1 = x sin\u03b8 + x = x (sin\u03b8 + 1)\n",
      "\n",
      "Therefore, x = 1 / (1 + sin\u03b8)\n",
      "\n",
      "But the problem states that OC is in the form k / (1 + m sin\u03b8). Comparing, we have x = 1 / (1 + sin\u03b8) = 1 / (1 + 1 sin\u03b8). Therefore, k is 1 and m is 1. Therefore, k + m = 1 + 1 = 2.\n",
      "\n",
      "Wait, let me check again. Wait, OC is 1/(1 + sin\u03b8). The problem says the form k/(1 + m sin\u03b8). So, in this case, k is 1 and m is 1, so k + m = 2. Is that correct?\n",
      "\n",
      "Wait, let me go through the steps again to make sure I didn't make a mistake.\n",
      "\n",
      "We had triangle OAB, right-angled at A. Angle at O is \u03b8. OA = 1, AB = tan\u03b8, OB = sec\u03b8. Then, angle at B is 90 - \u03b8, since angles in a triangle add to 180. Then, BC is the angle bisector of angle ABO, which is 90 - \u03b8. So, angle ABO is 90 - \u03b8, and BC bisects it into two angles of (90 - \u03b8)/2 each.\n",
      "\n",
      "Applying the Angle Bisector Theorem: in triangle ABO, angle bisector from B to OA (point C). Then, AC / CO = AB / BO. AB is tan\u03b8, BO is sec\u03b8. So ratio AB/BO is tan\u03b8 / sec\u03b8 = sin\u03b8. Therefore, AC/CO = sin\u03b8. Since AC + CO = OA = 1, then AC = 1 - OC. Let OC = x, so AC = 1 - x. Then (1 - x)/x = sin\u03b8 => 1 - x = x sin\u03b8 => 1 = x (sin\u03b8 + 1) => x = 1 / (1 + sin\u03b8). Therefore, OC = 1 / (1 + sin\u03b8). Therefore, k is 1 and m is 1, so k + m = 2.\n",
      "\n",
      "Therefore, the answer is 2. Hmm, that seems straightforward. Did I miss something? Let me check the Angle Bisector Theorem again. The theorem states that the angle bisector divides the opposite side into the ratio of the adjacent sides. So, in triangle ABO, angle at B is being bisected by BC, hitting OA at C. Then, AC / CO = AB / BO. Yes, that's correct. So AB is the side adjacent to angle at A (but wait, AB is opposite to angle O). Wait, maybe I need to verify the ratio again.\n",
      "\n",
      "Let me recall the Angle Bisector Theorem formula. In triangle XYZ, if a bisector from X meets YZ at W, then YW/WZ = XY/XZ.\n",
      "\n",
      "So in this case, triangle ABO. The angle bisector is from B to OA at point C. So, angle at B is being bisected. Therefore, the ratio of the adjacent sides is AB/BO. Wait, no, according to the theorem, the ratio is the adjacent sides to the angle being bisected. So, if we have angle at B being bisected, then the ratio is the sides adjacent to angle B. The sides adjacent to angle B are BA and BO. Wait, angle at B is between BA and BO. So, when the bisector BC splits OA into AC and CO, then the ratio AC/CO = AB/BO. Yes, that's correct. So AB is the length opposite to angle at O, but for the ratio, it's AB/BO. So yes, AB/BO is tan\u03b8 / sec\u03b8 = sin\u03b8. So, ratio AC/CO = sin\u03b8. Therefore, the previous calculation holds. Therefore, OC = 1/(1 + sin\u03b8), so k=1, m=1, so k + m = 2. So I think that's correct.\n",
      "\n",
      "Alternatively, maybe there's a miscalculation here. Let me check with coordinates. Let me set up coordinates. Let me place point O at (0,0). Since OA is radius 1, let's say point A is at (1,0). Since AB is tangent at A, and OA is horizontal, then AB is vertical. So AB is the line x=1. Then, point B is somewhere along x=1. Let's find coordinates of B.\n",
      "\n",
      "Angle AOB is \u03b8. Since OA is from (0,0) to (1,0), and angle AOB is \u03b8, then point B is somewhere such that angle between OA and OB is \u03b8. Since AB is tangent at A, OA is perpendicular to AB, so AB is vertical. Therefore, OB makes angle \u03b8 with OA (the x-axis). Therefore, the coordinates of B can be found parametrically. Let me parametrize OB. Since OB has length sec\u03b8 (as we found before), then coordinates of B are (sec\u03b8 * \n",
      "Extracted:\n",
      "None\n",
      "********************Question:\n",
      "In the addition shown below $A$, $B$, $C$, and $D$ are distinct digits. How many different values are possible for $D$?  \n",
      "$$  \n",
      "\\begin{array}{cccccc}&A&B&B&C&B\\\\+&B&C&A&D&A\\\\\\hline&D&B&D&D&D\\end{array}\n",
      "$$  \n",
      "Provide the number of different possible values for $D$. \n",
      "Answer:\n",
      "7 \n",
      "Response:\n",
      "Okay, let's see. I need to solve this cryptarithmetic puzzle where each letter represents a distinct digit. The problem is adding two numbers:\n",
      "\n",
      "  A B B C B\n",
      "+ B C A D A\n",
      "= D B D D D\n",
      "\n",
      "And I need to find how many different values are possible for D. Alright, let's break this down step by step.\n",
      "\n",
      "First, I'll write the addition vertically as given:\n",
      "\n",
      "   A B B C B\n",
      "+  B C A D A\n",
      "= D B D D D\n",
      "\n",
      "Since it's a vertical addition, I should consider each column from right to left (units place to higher places), keeping track of possible carry-over values. Let's label the columns as positions 1 (rightmost) to 5 (leftmost).\n",
      "\n",
      "Let me denote the columns as follows:\n",
      "\n",
      "Position 1 (units place): B + A = D (possibly plus a carry-over)\n",
      "Position 2: A + D = D (plus carry-over)\n",
      "Position 3: C + A = D (plus carry-over)\n",
      "Position 4: B + C = B (plus carry-over)\n",
      "Position 5: A + B = D (plus carry-over, if any)\n",
      "\n",
      "But wait, the result D is in the fifth position as well. Let me check again.\n",
      "\n",
      "Wait, let me index the columns properly. Let's look at each column:\n",
      "\n",
      "Starting from the right (units place):\n",
      "\n",
      "Column 1: B (from first number) + A (from second number) = D (result's units place)\n",
      "Column 2: C + D = D (but wait, looking at the alignment again. Wait, the first number is A B B C B, so the digits from right to left are B (position1), C (position2), B (position3), B (position4), A (position5). The second number is B C A D A, so from right to left: A (position1), D (position2), A (position3), C (position4), B (position5). The sum is D B D D D, so from right to left: D (position1), D (position2), D (position3), B (position4), D (position5).\n",
      "\n",
      "So correcting that:\n",
      "\n",
      "Column 1 (units place): B + A = D (with possible carry-over c1)\n",
      "Column 2: C + D + c1 = D (with possible carry-over c2)\n",
      "Column 3: B + A + c2 = D (with possible carry-over c3)\n",
      "Column 4: B + C + c3 = B (with possible carry-over c4)\n",
      "Column 5: A + B + c4 = D\n",
      "\n",
      "So now, we can set up equations for each column, considering the carry-overs.\n",
      "\n",
      "Let me note down each step.\n",
      "\n",
      "Starting with Column 1:\n",
      "\n",
      "Column 1: B + A = D or B + A = D + 10*c1, where c1 is 0 or 1 (since the maximum sum here is 9+9=18, so c1 can be 0 or 1).\n",
      "\n",
      "Column 2: C + D + c1 = D + 10*c2. Simplify: C + c1 = 10*c2. Since C is a digit (0-9), c1 is 0 or 1. So C + c1 can be between 0+0=0 and 9+1=10. Therefore, c2 can be 0 or 1. If c2 is 0, then C + c1 = 0 \u21d2 C=0 and c1=0. If c2 is 1, then C + c1 = 10 \u21d2 C=10 - c1. Since c1 is 0 or 1, C would be 10 or 9. But C is a digit, so C=9 (if c1=1) or C=10 (invalid). Therefore, only possible if c1=1 and C=9, leading to c2=1.\n",
      "\n",
      "Therefore, either:\n",
      "\n",
      "Case 1: c2=0, C=0, c1=0\n",
      "\n",
      "Case 2: c2=1, C=9, c1=1\n",
      "\n",
      "So moving on. Let's keep that in mind.\n",
      "\n",
      "Now Column 3: B + A + c2 = D + 10*c3.\n",
      "\n",
      "But remember from Column 1: B + A = D + 10*c1 (if c1=0, then B+A=D; if c1=1, then B+A=D+10).\n",
      "\n",
      "But depending on whether we are in Case 1 or Case 2, c1 can be 0 or 1.\n",
      "\n",
      "So let's consider both cases separately.\n",
      "\n",
      "First, let's handle Column 2 outcomes.\n",
      "\n",
      "Let me start with Case 1: c2=0, C=0, c1=0.\n",
      "\n",
      "So, in this case, Column 1: B + A = D (since c1=0). Column 2: C=0 here.\n",
      "\n",
      "Then Column 3: B + A + c2 (which is 0) = D + 10*c3 \u21d2 since B + A = D, so D + 10*c3 = D \u21d2 10*c3=0 \u21d2 c3=0. So no carry-over here.\n",
      "\n",
      "Then Column 4: B + C + c3 = B + 0 + 0 = B. But according to the sum, this column should equal B (since the result's fourth digit is B). Therefore, B + C + c3 = B + 0 + 0 = B, which matches. So that's okay. There's no carry-over here. Therefore, c4 is 0.\n",
      "\n",
      "Then Column 5: A + B + c4 = D \u21d2 A + B + 0 = D. But from Column 1, we had A + B = D. Therefore, this equation is consistent. So nothing new here.\n",
      "\n",
      "So in this case, all equations are consistent as long as A + B = D, C=0, and there's no carry-over in Column 1 and 3, and Column 4.\n",
      "\n",
      "Now, let's check constraints. All letters A, B, C, D are distinct digits. Since C=0 in this case, so A, B, D \u2260 0.\n",
      "\n",
      "Also, from Column 1, A + B = D. Since D is a single digit, A + B must be less than 10 (since there's no carry-over from Column 1; because c1=0 in this case). So A + B is between 1+2=3 (since they are distinct and non-zero) up to 9 (since their sum is D, a digit).\n",
      "\n",
      "So possible values for D here are from 3 to 9, but D must be A + B. However, D must not be equal to A, B, or C (which is 0). Since A and B are distinct and non-zero, D can't be A or B. So D is the sum of A and B, which are distinct digits, so D can be from 3 to 9, but excluding any values that would make D equal to A or B. But since D is the sum, if A and B are such that their sum is different from either, D can be any of these.\n",
      "\n",
      "Wait, but D has to be a distinct digit. Since A and B are distinct, and D is their sum, which could potentially be equal to A or B if, say, A=1, B=1, but they have to be distinct. Wait, since A and B are distinct digits, so D = A + B cannot be equal to A or B unless one of them is 0. But since in this case C=0, and A and B are non-zero, so D can't be equal to A or B. Because for example, if A=2 and B=3, D=5, which is different. If A=9 and B=0, but B can't be 0 here because in this case C=0, and all digits are distinct. So in this case, A and B are from 1-9 (excluding 0). Therefore, D=A+B must be distinct from A and B. Since A and B are at least 1, so D is at least 2 (if A=1, B=1, but they have to be distinct, so minimum D=1+2=3). Therefore, in this case, possible D values are 3 to 9 (since D is a single-digit sum, so maximum 9+8=17, but wait no, in this case, since there is no carry-over, A+B must be less than 10. \n",
      "Extracted:\n",
      "None\n",
      "********************Question:\n",
      "Let $a_1 = 2021$ and for $n \\geq 1$, let $a_{n+1} = \\sqrt{4 + a_n}$. Then $a_5$ can be written as \\[ \\sqrt{\\frac{m+\\sqrt{n}}{2}} + \\sqrt{\\frac{m-\\sqrt{n}}{2}} \\] where $m$ and $n$ are positive integers. Find $10m + n$. \n",
      "Answer:\n",
      "45 \n",
      "Response:\n",
      "Okay, let's tackle this problem step by step. So, we have a sequence where the first term is 2021, and each subsequent term is the square root of 4 plus the previous term. We need to find the fifth term, a\u2085, and express it in the given form involving m and n, then compute 10m + n.\n",
      "\n",
      "First, let me write down what's given:\n",
      "\n",
      "a\u2081 = 2021\n",
      "\n",
      "For n \u2265 1, a\u2099\u208a\u2081 = \u221a(4 + a\u2099)\n",
      "\n",
      "We need to find a\u2085 and express it as \u221a[(m + \u221an)/2] + \u221a[(m - \u221an)/2], then find 10m + n.\n",
      "\n",
      "Hmm, okay. So, the sequence is defined recursively with each term being the square root of 4 plus the previous term. Let me start by computing the first few terms manually to see if I can spot a pattern or figure out a way to express a\u2085 in the required form.\n",
      "\n",
      "Starting with a\u2081 = 2021.\n",
      "\n",
      "Then a\u2082 = \u221a(4 + 2021) = \u221a(2025). Wait, 2025 is 45 squared, right? Because 45*45 is 2025. So, a\u2082 = 45.\n",
      "\n",
      "Then a\u2083 = \u221a(4 + 45) = \u221a49 = 7.\n",
      "\n",
      "Then a\u2084 = \u221a(4 + 7) = \u221a11. Hmm, okay, that's an irrational number.\n",
      "\n",
      "Then a\u2085 = \u221a(4 + \u221a11). Wait, but the problem states that a\u2085 can be written as the sum of two square roots in that specific form. So maybe I need to manipulate \u221a(4 + \u221a11) into that form?\n",
      "\n",
      "But let me check if I did the calculations correctly. Let me confirm:\n",
      "\n",
      "a\u2081 = 2021\n",
      "\n",
      "a\u2082 = sqrt(4 + 2021) = sqrt(2025) = 45. Correct.\n",
      "\n",
      "a\u2083 = sqrt(4 + 45) = sqrt(49) = 7. Correct.\n",
      "\n",
      "a\u2084 = sqrt(4 + 7) = sqrt(11). Yes.\n",
      "\n",
      "a\u2085 = sqrt(4 + sqrt(11)). Right. So, we need to express sqrt(4 + sqrt(11)) as [sqrt((m + sqrt(n))/2) + sqrt((m - sqrt(n))/2)]. Interesting. \n",
      "\n",
      "So, let's denote x = sqrt((m + sqrt(n))/2) + sqrt((m - sqrt(n))/2). Then, squaring both sides, we can find x\u00b2, which should be equal to 4 + sqrt(11). Let's compute x\u00b2.\n",
      "\n",
      "First, expand the square of the sum:\n",
      "\n",
      "x\u00b2 = [sqrt((m + sqrt(n))/2) + sqrt((m - sqrt(n))/2)]\u00b2\n",
      "\n",
      "= [sqrt((m + sqrt(n))/2)]\u00b2 + 2 * sqrt((m + sqrt(n))/2) * sqrt((m - sqrt(n))/2) + [sqrt((m - sqrt(n))/2)]\u00b2\n",
      "\n",
      "Simplify each term:\n",
      "\n",
      "First term: (m + sqrt(n))/2\n",
      "\n",
      "Second term: 2 * sqrt{ [(m + sqrt(n))/2 * (m - sqrt(n))/2] }\n",
      "\n",
      "Third term: (m - sqrt(n))/2\n",
      "\n",
      "So adding the first and third terms: [(m + sqrt(n))/2 + (m - sqrt(n))/2] = [ (m + sqrt(n) + m - sqrt(n)) / 2 ] = (2m)/2 = m\n",
      "\n",
      "Then the second term: 2 * sqrt{ [(m + sqrt(n))(m - sqrt(n))]/(4) } = 2 * sqrt{ [m\u00b2 - (sqrt(n))\u00b2]/4 } = 2 * sqrt{ (m\u00b2 - n)/4 } = 2 * [ sqrt(m\u00b2 - n)/2 ] = sqrt(m\u00b2 - n)\n",
      "\n",
      "Therefore, x\u00b2 = m + sqrt(m\u00b2 - n)\n",
      "\n",
      "But according to the problem, x is a\u2085, which is sqrt(4 + sqrt(11)). So, x\u00b2 = 4 + sqrt(11). Therefore, we have:\n",
      "\n",
      "m + sqrt(m\u00b2 - n) = 4 + sqrt(11)\n",
      "\n",
      "So, we can set up equations by equating the rational and irrational parts. Let me think. If m + sqrt(m\u00b2 - n) equals 4 + sqrt(11), then m must be 4, and sqrt(m\u00b2 - n) must be sqrt(11). Let's check:\n",
      "\n",
      "If m = 4, then sqrt(4\u00b2 - n) = sqrt(16 - n) = sqrt(11). Therefore, 16 - n = 11 \u21d2 n = 16 -11 = 5.\n",
      "\n",
      "So m = 4, n = 5. Therefore, 10m + n = 10*4 +5 = 45. So, is that the answer? Wait, but let me confirm again step by step to make sure.\n",
      "\n",
      "Wait, let me check if there's another possibility. For example, maybe the sqrt(m\u00b2 - n) is equal to sqrt(11), but what if the expression was m + sqrt(m\u00b2 - n) = 4 + sqrt(11). Since m and n are integers, m must be 4, because m is the rational part. Then sqrt(m\u00b2 - n) must equal sqrt(11), so m\u00b2 -n = 11, hence n = m\u00b2 -11. If m is 4, then n = 16 -11 = 5. So yes, m=4, n=5. Then 10m +n is 45. \n",
      "\n",
      "But let me go back through the steps again to ensure that there's no mistake.\n",
      "\n",
      "Original problem: express a\u2085 as that sum of square roots. We found a\u2085 is sqrt(4 + sqrt(11)). Then set that equal to the sum, squared to get m + sqrt(m\u00b2 -n) = 4 + sqrt(11). Therefore m=4, m\u00b2 -n=11, so n=16-11=5. Seems correct.\n",
      "\n",
      "Wait, but maybe I made a mistake in calculating a\u2085? Let me verify the sequence again:\n",
      "\n",
      "a1 = 2021\n",
      "\n",
      "a2 = sqrt(4 + 2021) = sqrt(2025) = 45. Correct.\n",
      "\n",
      "a3 = sqrt(4 + 45) = sqrt(49) = 7. Correct.\n",
      "\n",
      "a4 = sqrt(4 + 7) = sqrt(11). Correct.\n",
      "\n",
      "a5 = sqrt(4 + sqrt(11)). Yes, that's right. So then expressing that as the sum of two square roots.\n",
      "\n",
      "Alternatively, perhaps there's a different approach where m and n are larger numbers? Let me think. Wait, maybe I need to look deeper. Let's double-check the algebra when expanding x\u00b2.\n",
      "\n",
      "Let me rederive that part.\n",
      "\n",
      "Let\u2019s denote that expression again:\n",
      "\n",
      "Let\u2019s let\u2019s say that x = sqrt[(m + sqrt(n))/2] + sqrt[(m - sqrt(n))/2]\n",
      "\n",
      "Then x\u00b2 = [sqrt((m + sqrt(n))/2)]\u00b2 + 2 * sqrt((m + sqrt(n))/2) * sqrt((m - sqrt(n))/2) + [sqrt((m - sqrt(n))/2)]\u00b2\n",
      "\n",
      "So that's (m + sqrt(n))/2 + 2 * sqrt{ [(m + sqrt(n))/2 * (m - sqrt(n))/2]} + (m - sqrt(n))/2.\n",
      "\n",
      "Adding the first and third terms: [ (m + sqrt(n)) + (m - sqrt(n)) ] / 2 = (2m)/2 = m. Correct.\n",
      "\n",
      "Then the middle term: 2 * sqrt{ [ (m + sqrt(n))(m - sqrt(n)) ] / 4 }\n",
      "\n",
      "Which is 2 * sqrt{ (m\u00b2 - (sqrt(n))\u00b2)/4 } = 2 * sqrt{ (m\u00b2 - n)/4 } = 2 * [ sqrt(m\u00b2 - n)/2 ] = sqrt(m\u00b2 - n). Correct.\n",
      "\n",
      "Therefore, x\u00b2 = m + sqrt(m\u00b2 - n). So equating that to 4 + sqrt(11) gives m = 4, and sqrt(m\u00b2 - n) = sqrt(11), hence m\u00b2 -n = 11 => 16 - n = 1 \n",
      "Extracted:\n",
      "None\n",
      "********************Question:\n",
      "Phoenix hiked the Rocky Path Trail last week. It took four days to complete the trip. The first two days she hiked a total of 26 miles. The second and third days she averaged 12 miles per day. The last two days she hiked a total of 28 miles. The total hike for the first and third days was 22 miles. How many miles long was the trail? \n",
      "Answer:\n",
      "54 \n",
      "Response:\n",
      "Okay, let's see. I need to find the total length of the Rocky Path Trail that Phoenix hiked over four days. Let's break down the information given step by step.\n",
      "\n",
      "First, the problem states that the first two days she hiked a total of 26 miles. So, if I let the distance on day 1 be A and day 2 be B, then A + B = 26.\n",
      "\n",
      "Next, it says the second and third days she averaged 12 miles per day. Since averages are total divided by the number of days, the total for days 2 and 3 would be 12 * 2 = 24 miles. So, B + C = 24. Wait, but earlier we had A + B = 26. So now we can maybe find some relationships here.\n",
      "\n",
      "Then, the last two days (days 3 and 4) she hiked a total of 28 miles. So, C + D = 28.\n",
      "\n",
      "Also, the total hike for the first and third days was 22 miles. That gives another equation: A + C = 22.\n",
      "\n",
      "So now we have a system of equations:\n",
      "\n",
      "1. A + B = 26\n",
      "2. B + C = 24\n",
      "3. C + D = 28\n",
      "4. A + C = 22\n",
      "\n",
      "We need to find the total trail length, which is A + B + C + D. But since we know A + B is 26 and C + D is 28, adding those two would give 26 + 28 = 54. Wait, is that possible? But let me check if that's correct. Because maybe the equations are consistent?\n",
      "\n",
      "Wait, let me make sure. Let's solve the system properly to find each variable.\n",
      "\n",
      "From equation 1: A = 26 - B.\n",
      "\n",
      "From equation 2: B + C =24, so C =24 - B.\n",
      "\n",
      "From equation 4: A + C =22. Substituting A and C from above: (26 - B) + (24 - B) = 22. That simplifies to 26 +24 -2B =22 \u2192 50 -2B =22 \u2192 -2B = -28 \u2192 B =14. \n",
      "\n",
      "So B is 14. Then from equation 1, A =26 -14 =12.\n",
      "\n",
      "From equation 2, C =24 -14=10.\n",
      "\n",
      "From equation 4, A + C =12 +10=22, which checks out.\n",
      "\n",
      "Then from equation 3, C + D =28, so 10 + D =28 \u2192 D=18.\n",
      "\n",
      "So the total distance is A+B+C+D =12+14+10+18=54. \n",
      "\n",
      "So the answer should be 54 miles. Let me verify all the given conditions with these values:\n",
      "\n",
      "First two days: 12 +14 =26 \u2714\ufe0f\n",
      "\n",
      "Second and third days:14 +10=24, which averages to 12 per day \u2714\ufe0f\n",
      "\n",
      "Last two days:10 +18=28 \u2714\ufe0f\n",
      "\n",
      "First and third days:12 +10=22 \u2714\ufe0f\n",
      "\n",
      "All conditions are satisfied. So the total length is 54.\n",
      "To determine the total length of the Rocky Path Trail that Phoenix hiked, we need to set up and solve a system of equations based on the given information.\n",
      "\n",
      "Let the distances hiked on the first, second, third, and fourth days be \\(A\\), \\(B\\), \\(C\\), and \\(D\\) respectively.\n",
      "\n",
      "The given information can be translated into the following equations:\n",
      "\n",
      "1. \\(A + B = 26\\) (The first two days she hiked a total of 26 miles.)\n",
      "2. \\(B + C = 24\\) (The second and third days she averaged 12 miles per day, so the total is 24 miles.)\n",
      "3. \\(C + D = 28\\) (The last two days she hiked a total of 28 miles.)\n",
      "4. \\(A + C = 22\\) (The total hike for the first and third days was 22 miles.)\n",
      "\n",
      "We need to find the total length of the trail, which is \\(A + B + C + D\\).\n",
      "\n",
      "First, solve the system of equations step-by-step.\n",
      "\n",
      "From equation 1:\n",
      "\\[A = 26 - B\\]\n",
      "\n",
      "Substitute \\(A\\) into equation 4:\n",
      "\\[(26 - B) + C = 22\\]\n",
      "\\[26 - B + C = 22\\]\n",
      "\\[-B + C = -4\\]\n",
      "\\[C = B - 4\\]\n",
      "\n",
      "Now substitute \\(C\\) into equation 2:\n",
      "\\[B + (B - 4) = 24\\]\n",
      "\\[2B - 4 = 24\\]\n",
      "\\[2B = 28\\]\n",
      "\\[B = 14\\]\n",
      "\n",
      "Now substitute \\(B = 14\\) back into the equations to find the other variables:\n",
      "\\[A = 26 - 14 = 12\\]\n",
      "\\[C = 14 - 4 = 10\\]\n",
      "\n",
      "Now substitute \\(C = 10\\) into equation 3 to find \\(D\\):\n",
      "\\[10 + D = 28\\]\n",
      "\\[D = 18\\]\n",
      "\n",
      "Now, we can find the total length of the trail:\n",
      "\\[A + B + C + D = 12 + 14 + 10 + 18 = 54\\]\n",
      "\n",
      "Thus, the total length of the trail is \\(\\boxed{54}\\) miles.<end_working_out><SOLUTION>54</SOLUTION> \n",
      "Extracted:\n",
      "54\n",
      "********************Question:\n",
      "Right triangle $ABC$ has side lengths $BC=6$, $AC=8$, and $AB=10$. A circle centered at $O$ is tangent to line $BC$ at $B$ and passes through $A$. A circle centered at $P$ is tangent to line $AC$ at $A$ and passes through $B$. The original answer is in \\(\\frac{k}{m}\\) format, please give the value of k + m. \n",
      "Answer:\n",
      "47 \n",
      "Response:\n",
      "Okay, let's see. I need to find the value of k + m where the answer is k/m for this problem. The problem is about two circles in a right triangle ABC with sides BC=6, AC=8, and AB=10. The first circle is centered at O, tangent to BC at B and passing through A. The second circle is centered at P, tangent to AC at A and passing through B. Then, I have to find k/m and add them together.\n",
      "\n",
      "First, let me visualize the triangle. Since it's a right triangle with sides 6, 8, 10, the right angle must be at C because 6-8-10 is a Pythagorean triple (6\u00b2 + 8\u00b2 = 36 + 64 = 100 = 10\u00b2). So, triangle ABC is right-angled at C. That means angle C is 90 degrees, BC is one leg (6 units), AC is the other leg (8 units), and AB is the hypotenuse (10 units).\n",
      "\n",
      "Now, the first circle is centered at O, tangent to BC at B and passing through A. Since the circle is tangent to BC at B, the radius at the point of tangency (which is B) must be perpendicular to BC. Because BC is a horizontal side (assuming the right angle at C), the tangent at B would mean the radius OB is vertical. Wait, BC is from point B to point C. Let me confirm the coordinates. Maybe assigning coordinates to the points will help.\n",
      "\n",
      "Let me place point C at the origin (0,0). Then, since AC is 8 units and AC is a leg, and angle C is the right angle, AC can be along the y-axis from C(0,0) to A(0,8). Wait, but hold on, BC is 6 units. If C is at (0,0), then B can be at (6,0) because BC is 6 units. Then AC is from C(0,0) to A(0,8), making AC 8 units. Then AB is the hypotenuse from A(0,8) to B(6,0). Let me check the distance between A and B. The distance formula is sqrt[(6-0)^2 + (0-8)^2] = sqrt(36 + 64) = sqrt(100) = 10. Yes, that's correct. So coordinates: C(0,0), B(6,0), A(0,8).\n",
      "\n",
      "Now, the circle centered at O is tangent to BC at B. Since BC is the horizontal line from B(6,0) to C(0,0), the line BC is the x-axis from (0,0) to (6,0). A circle tangent to BC at B(6,0) must have its center O lying along the line perpendicular to BC at B. Since BC is horizontal, the perpendicular is vertical. Therefore, the center O is along the vertical line passing through B(6,0). So the coordinates of O are (6, k) for some k. Since the circle passes through A(0,8), the distance from O(6,k) to A(0,8) must be equal to the radius. Also, the radius is the distance from O to B(6,0), which is |k - 0| = |k|. Since the circle is tangent at B, the radius is OB, which is vertical, so the radius is the distance from O to B, which is |k|. Therefore, the radius is |k|, and the distance from O to A must also be |k|.\n",
      "\n",
      "So, let's set up the equation. The distance between O(6,k) and A(0,8) should equal |k|.\n",
      "\n",
      "Distance OA: sqrt[(6 - 0)^2 + (k - 8)^2] = sqrt[36 + (k - 8)^2]\n",
      "\n",
      "Set equal to |k|:\n",
      "\n",
      "sqrt[36 + (k - 8)^2] = |k|\n",
      "\n",
      "Square both sides to eliminate the square root:\n",
      "\n",
      "36 + (k - 8)^2 = k\u00b2\n",
      "\n",
      "Expand (k - 8)^2: k\u00b2 - 16k + 64\n",
      "\n",
      "So:\n",
      "\n",
      "36 + k\u00b2 - 16k + 64 = k\u00b2\n",
      "\n",
      "Combine like terms:\n",
      "\n",
      "36 + 64 + k\u00b2 -16k = k\u00b2\n",
      "\n",
      "100 + k\u00b2 -16k = k\u00b2\n",
      "\n",
      "Subtract k\u00b2 from both sides:\n",
      "\n",
      "100 -16k = 0\n",
      "\n",
      "Then:\n",
      "\n",
      "100 = 16k\n",
      "\n",
      "k = 100/16 = 25/4 = 6.25\n",
      "\n",
      "So the coordinates of O are (6, 25/4). Therefore, the center O is at (6, 25/4). The radius of this circle is |k| = 25/4.\n",
      "\n",
      "Wait, but let me check if that makes sense. If O is at (6, 25/4), then the distance from O to B(6,0) is 25/4 - 0 = 25/4. And the distance from O to A(0,8) is sqrt((6-0)^2 + (25/4 - 8)^2) = sqrt(36 + (25/4 - 32/4)^2) = sqrt(36 + (-7/4)^2) = sqrt(36 + 49/16) = convert 36 to 576/16, so 576/16 + 49/16 = 625/16. Then sqrt(625/16) = 25/4. Yes, that's correct. So that works. So O is at (6, 25/4).\n",
      "\n",
      "Now moving on to the second circle. The circle centered at P is tangent to AC at A and passes through B.\n",
      "\n",
      "Similarly, AC is the vertical line from A(0,8) to C(0,0). The circle is tangent to AC at A, so the radius at the point of tangency A must be perpendicular to AC. Since AC is vertical, the perpendicular direction is horizontal. Therefore, the center P must lie along the horizontal line passing through A. So the coordinates of P are (h, 8) for some h.\n",
      "\n",
      "Since the circle passes through B(6,0), the distance from P(h,8) to B(6,0) must equal the radius. The radius is also the distance from P to A(0,8), which is |h - 0| = |h|, because the radius is along the horizontal line from P(h,8) to A(0,8), which is horizontal distance |h - 0| = |h|.\n",
      "\n",
      "Therefore, set the distance from P(h,8) to B(6,0) equal to |h|.\n",
      "\n",
      "Compute the distance PB: sqrt[(h - 6)^2 + (8 - 0)^2] = sqrt[(h - 6)^2 + 64]\n",
      "\n",
      "Set equal to |h|:\n",
      "\n",
      "sqrt[(h - 6)^2 + 64] = |h|\n",
      "\n",
      "Square both sides:\n",
      "\n",
      "(h - 6)^2 + 64 = h\u00b2\n",
      "\n",
      "Expand (h - 6)^2: h\u00b2 -12h + 36\n",
      "\n",
      "So:\n",
      "\n",
      "h\u00b2 -12h + 36 + 64 = h\u00b2\n",
      "\n",
      "Combine like terms:\n",
      "\n",
      "h\u00b2 -12h + 100 = h\u00b2\n",
      "\n",
      "Subtract h\u00b2 from both sides:\n",
      "\n",
      "-12h + 100 = 0\n",
      "\n",
      "Then:\n",
      "\n",
      "-12h = -100\n",
      "\n",
      "h = (-100)/(-12) = 100/12 = 25/3 \u2248 8.333...\n",
      "\n",
      "So the coordinates of P are (25/3, 8). The radius is |h| = 25/3.\n",
      "\n",
      "Let me verify. The distance from P(25/3, 8) to A(0,8) is |25/3 - 0| = 25/3. The distance from P to B(6,0) is sqrt[(25/3 - 6)^2 + (8 - 0)^2]. Let's compute 25/3 - 6 = 25/3 - 18/3 = 7/3. Then (7/3 \n",
      "Extracted:\n",
      "None\n",
      "********************Question:\n",
      "What is the area of the region in the $xy-$plane that satisfies \\[\\lfloor x \\rfloor \\lfloor y \\rfloor = 16\\, ?\\] \n",
      "Answer:\n",
      "10 \n",
      "Response:\n",
      "Okay, so I need to find the area of the region in the xy-plane where the product of the floor of x and the floor of y equals 16. Hmm, let's break this down step by step.\n",
      "\n",
      "First, I remember that the floor function \u230ax\u230b gives the greatest integer less than or equal to x. So, \u230ax\u230b is an integer, and similarly for \u230ay\u230b. The equation given is \u230ax\u230b\u230ay\u230b = 16. That means the product of two integers is 16. So, I need to find all pairs of integers (a, b) such that a * b = 16. Then, for each pair (a, b), determine the region in the xy-plane where \u230ax\u230b = a and \u230ay\u230b = b, and calculate the area of each such region. Finally, sum up all these areas to get the total area.\n",
      "\n",
      "Alright, let's start by listing all pairs of integers (a, b) where a * b = 16. Since 16 is positive, both a and b must be either positive or both negative. Let's list all possible integer pairs:\n",
      "\n",
      "Positive pairs:\n",
      "(1, 16)\n",
      "(2, 8)\n",
      "(4, 4)\n",
      "(8, 2)\n",
      "(16, 1)\n",
      "\n",
      "Negative pairs:\n",
      "(-1, -16)\n",
      "(-2, -8)\n",
      "(-4, -4)\n",
      "(-8, -2)\n",
      "(-16, -1)\n",
      "\n",
      "So, there are 5 positive pairs and 5 negative pairs, making 10 pairs in total.\n",
      "\n",
      "For each of these pairs (a, b), the region where \u230ax\u230b = a and \u230ay\u230b = b is the set of all real numbers x in the interval [a, a+1) and y in the interval [b, b+1). Wait, is that right? Let me confirm. The floor of x equals a means that x is in [a, a+1), not including a+1. Similarly for y. So, each such pair (a, b) defines a rectangle in the plane with width 1 (from a to a+1) and height 1 (from b to b+1). Therefore, the area for each such rectangle is 1*1 = 1.\n",
      "\n",
      "But wait, does that hold for all pairs? Let me check with an example. If a=2 and b=8, then x is in [2,3) and y is in [8,9). The area of that rectangle is indeed (3-2)*(9-8) = 1*1 = 1. Similarly, for any integer a and b, the interval for x has length 1, and the interval for y also has length 1, so the area is 1 per pair.\n",
      "\n",
      "Therefore, if there are 10 such pairs, the total area would be 10 * 1 = 10. But wait, hold on. Let me make sure that none of the pairs result in intervals that don't exist. For example, if a is negative, like a=-2, then x is in [-2, -1), which is a valid interval of length 1. Similarly for y. So yes, each pair contributes an area of 1. Therefore, each of the 10 pairs contributes 1, so total area is 10.\n",
      "\n",
      "But wait, hold on again. Let me verify if all these pairs are distinct. For instance, (2,8) and (8,2) are different pairs, right? Because in one case, a=2 and b=8, and in the other, a=8 and b=2. So each of these would correspond to different regions in the plane, hence contributing different areas. But since each region is a unit square, each contributes 1. So regardless of the order, each ordered pair (a, b) contributes 1. Therefore, the total number of ordered pairs (a, b) such that a*b=16 is 10, so the area is 10*1=10.\n",
      "\n",
      "Wait, but let me check if there are actually 10 ordered pairs. Let's list them again.\n",
      "\n",
      "Positive pairs:\n",
      "(1,16), (2,8), (4,4), (8,2), (16,1) \u2013 that's 5 pairs.\n",
      "\n",
      "Negative pairs:\n",
      "(-1,-16), (-2,-8), (-4,-4), (-8,-2), (-16,-1) \u2013 that's another 5 pairs.\n",
      "\n",
      "Total of 10 ordered pairs. Each contributes 1 unit area. Therefore, the total area is 10. So the answer should be 10? But wait, let me think again. Because floor functions can sometimes have edge cases where intervals might not be entirely in the plane, but since all the intervals [a, a+1) and [b, b+1) are valid for any integer a and b, as long as they are real numbers. So even if a is negative, like -2, the interval [-2, -1) is valid. So yes, each pair (a, b) contributes area 1. Therefore, 10 pairs, total area 10. Hmm. But wait, let me check an example. Let's take the pair (1,16). The region is x \u2208 [1,2), y \u2208 [16,17). The area is 1*1=1. Similarly, for (-1, -16), x \u2208 [-1,0), y \u2208 [-16,-15), area is also 1. So each contributes 1. Therefore, 10 pairs => 10. So the answer is \\boxed{10}?\n",
      "\n",
      "Wait, but let me check again. Maybe I made a mistake in counting the number of pairs. Let me think about the factors of 16.\n",
      "\n",
      "The integer solutions to a*b=16 can be found by considering all divisors of 16. The divisors of 16 are \u00b11, \u00b12, \u00b14, \u00b18, \u00b116.\n",
      "\n",
      "For each positive divisor a, there is a corresponding b=16/a. Similarly for negative divisors.\n",
      "\n",
      "So, for positive divisors:\n",
      "\n",
      "a can be 1, 2, 4, 8, 16. Each gives a distinct b: 16, 8, 4, 2, 1. That's 5 pairs.\n",
      "\n",
      "For negative divisors:\n",
      "\n",
      "a can be -1, -2, -4, -8, -16. Then b must be 16/a, which would be -16, -8, -4, -2, -1 respectively. That's another 5 pairs.\n",
      "\n",
      "Total of 10 ordered pairs. So yes, 10 pairs. Each contributing 1. So 10*1=10. So the answer should be 10. But wait, let me check another way. For example, maybe the regions overlap? But no, each pair (a, b) defines a distinct region. Because if (a, b) \u2260 (c, d), then either a \u2260 c or b \u2260 d. Therefore, the regions for different pairs (a, b) are disjoint. For example, the region for (1,16) is x in [1,2) and y in [16,17), which doesn't overlap with the region for (2,8) which is x in [2,3) and y in [8,9), etc. Therefore, they are all separate, non-overlapping regions. Therefore, adding their areas is correct.\n",
      "\n",
      "Therefore, the total area is indeed 10. Therefore, the answer is \\boxed{10}.\n",
      "\n",
      "Wait, but let me check once more. For example, if a=4, b=4, so x \u2208 [4,5), y \u2208 [4,5). Area 1. Similarly for (-4,-4), x \u2208 [-4,-3), y \u2208 [-4,-3), area 1. So yes, each contributes 1. So 5 positive ordered pairs and 5 negative ordered pairs, total 10. So 10. Therefore, the area is 10. Hmm. I think that's correct. But just to be thorough, let me consider if there's a possible pair that's missed. For example, zero? But if either a or b is zero, then a*b=0, which is not 16. So zero can't be part of any pair. Therefore, all pairs must consist of non-zero integers. So yes, divisors of 16 \n",
      "Extracted:\n",
      "None\n",
      "********************Question:\n",
      "An event occurs periodically over $x$ consecutive years, followed by a break of $y$ consecutive years. The event occurred in the years 1964, 1986, 1996, and 2008, and did not occur in 1976, 1993, 2006, or 2013. Determine the first year in which the event will occur again. \n",
      "Answer:\n",
      "2018 \n",
      "Response:\n",
      "Okay, let's see. The problem is about figuring out the first year an event will occur again based on its previous occurrences and non-occurrences. The event happened in 1964, 1986, 1996, 2008, and didn't happen in 1976, 1993, 2006, 2013. We need to find the next year it will happen.\n",
      "\n",
      "First, I need to determine the pattern or the cycle of the event. Since it alternates between occurring for x years and then a break of y years, the cycle length is x + y. So, the event happens every x + y years, but with a period where it occurs for x consecutive years and then is off for y years. Wait, but how does that work? Like, does it occur in every year for x years, then not occur for y years, and repeat? Or is it that after each occurrence, there's a period of x years where it occurs, followed by y years without? Hmm. The problem states \"periodically over x consecutive years, followed by a break of y consecutive years.\" So, maybe the event occurs every x years, but in a cycle where it happens for x consecutive years, then is off for y years, and then repeats. But that might complicate. Wait, but looking at the given years: 1964, 1986, 1996, 2008. Let me check the differences between these years.\n",
      "\n",
      "From 1964 to 1986: that's 22 years. Then 1986 to 1996 is 10 years. 1996 to 2008 is 12 years. The breaks between the events are 1976 (which is not an occurrence year, so between 1964 and 1986, there's a break from 1965-1985? Wait, but the event occurred in 1964, then didn't happen in 1976. Wait, hold on. Wait, the non-occurrence years are 1976, 1993, 2006, 2013. So between 1964 and 1986, there's a non-occurrence in 1976, which is in between. So maybe the event occurs every certain number of years, but with breaks in between.\n",
      "\n",
      "Alternatively, maybe the event happens every (x + y) years. Let me think. Let's list the occurrence years: 1964, 1986, 1996, 2008. Let's calculate the differences:\n",
      "\n",
      "1986 - 1964 = 22\n",
      "\n",
      "1996 - 1986 = 10\n",
      "\n",
      "2008 - 1996 = 12\n",
      "\n",
      "Hmm, those differences are 22, 10, 12. Not sure. The non-occurrence years are 1976, 1993, 2006, 2013. Let's check those. For example, between 1964 and 1986, the next occurrence is 1986. But there was a non-occurrence in 1976. So maybe the cycle is such that after an occurrence, there's a break of y years, then it occurs for x years? Not sure.\n",
      "\n",
      "Alternatively, maybe the event occurs once every (x + y) years. So if it's periodic with period x + y, then the difference between consecutive occurrences should be roughly x + y. But in the given data, the differences are 22, 10, 12. These numbers don't seem consistent. 22, 10, 12. Wait, 10 and 12 are close to each other, but 22 is different. Maybe there's a pattern. Let me check if there's a common divisor. Let's see, 10 and 12. The GCD of 10 and 22 is 2. GCD of 10 and 12 is 2. Hmm. Maybe the cycle is 2 years? But that seems too short. Wait, but the breaks might be overlapping.\n",
      "\n",
      "Alternatively, maybe there's a longer cycle. Let's look for possible patterns. For example, maybe the event occurs every 12 years after 1986? But from 1986 to 1996 is 10, then 1996 to 2008 is 12. Then maybe the cycle alternates between 10 and 12? But that seems arbitrary. Maybe there's another way.\n",
      "\n",
      "Alternatively, think about the event occurring in years that are congruent to a certain number modulo some number. For example, maybe modulo 12 or something. Let's check the occurrence years:\n",
      "\n",
      "1964, 1986, 1996, 2008.\n",
      "\n",
      "Let me compute these years modulo some number. Let's see, 1964. Let's check the differences between the years. 1986 - 1964 = 22, 1996 - 1986 = 10, 2008 - 1996 = 12. The differences are 22, 10, 12. If we consider that the event is periodic with period x + y, then perhaps the differences should be multiples of that period. But since the differences vary, that might not hold.\n",
      "\n",
      "Alternatively, maybe the event happens every 12 years except for some breaks. But 1964 to 1976 is 12 years, but 1976 is a break. Then 1976 to 1986 is 10 years, which would be another break. Then 1986 to 1996 is 10, but according to the problem, the event happened in 1986, 1996, 2008. So 1996 is 10 years after 1986, then 2008 is 12 after 1996. Hmm. Maybe the cycle is 10 and 12 alternating? But how?\n",
      "\n",
      "Alternatively, think of the years as part of a sequence where the event occurs every x years, then is off for y years. So the period is x + y. For example, if x is 10 and y is 12, then the period is 22. But let's check. From 1964, adding 22 would be 1986, which matches. Then adding another 22 would be 2008, which also matches. Wait, but there's a 1996 in between. So 1986 + 10 = 1996. So maybe the cycle alternates between x and y? Like, after an occurrence, there's a period of x years with events, then y years without? But the problem states \"periodically over x consecutive years, followed by a break of y consecutive years.\" So maybe the event occurs for x consecutive years, then doesn't occur for y consecutive years, then repeats. So the period is x + y. But then the occurrence years would be every x + y years. However, in the given data, there are events in 1964, 1986, 1996, 2008. Let me check the years between 1964 and 1986. If the period is x + y, then 1964 + (x + y) would be 1986. Let's see, 1986 - 1964 = 22. So maybe the period is 22. Then 1964, 1986 (1964 +22), 2008 (1986 +22), then next would be 2030. But wait, there is an occurrence in 1996, which is 1986 +10. So maybe the period isn't consistent. Hmm.\n",
      "\n",
      "Alternatively, perhaps the event happens every 12 years but with some exceptions. Let's check. 19 \n",
      "Extracted:\n",
      "None\n",
      "********************Question:\n",
      "Compute the sum of the series \\( \\sum_{k=0}^{\\infty} \\frac{1}{(4 k+1)(4 k+2)(4 k+3)(4 k+4)}=\\frac{1}{1 \\cdot 2 \\cdot 3 \\cdot 4}+\\frac{1}{5 \\cdot 6 \\cdot 7 \\cdot 8}+\\cdots  \\). The original answer is in a special format\uff1a$\\frac{\\ln m}n-\\frac\\pi{p}.$ provide the sum of the denominators in the expression.  \n",
      "Answer:\n",
      "30 \n",
      "Response:\n",
      "Okay, so I need to compute the sum of the series \u2211_{k=0}^\u221e 1/[(4k+1)(4k+2)(4k+3)(4k+4)]. The problem states that the answer will be in the form (ln m)/n - \u03c0/p, and then I have to find the sum of the denominators n and p. Alright, let's start breaking this down.\n",
      "\n",
      "First, the series is an infinite sum of terms that are reciprocals of four consecutive terms in an arithmetic sequence starting at 1 with difference 4. Each term in the denominator is of the form (4k + m) where m ranges from 1 to 4. So, the general term is 1/[(4k+1)(4k+2)(4k+3)(4k+4)]. My goal is to find the sum from k=0 to infinity of this term.\n",
      "\n",
      "Since the denominator is a product of four consecutive terms, maybe partial fractions could help here. Partial fractions are often useful for simplifying rational functions so that they can be summed term by term, especially in telescoping series. Let me recall how to decompose such a product.\n",
      "\n",
      "Let me denote the general term as A/(4k+1) + B/(4k+2) + C/(4k+3) + D/(4k+4). But since the original term is 1/[(4k+1)(4k+2)(4k+3)(4k+4)], the partial fraction decomposition would need to be of the form:\n",
      "\n",
      "1/[(4k+1)(4k+2)(4k+3)(4k+4)] = A/(4k+1) + B/(4k+2) + C/(4k+3) + D/(4k+4)\n",
      "\n",
      "But before jumping into solving for A, B, C, D, maybe there's a smarter way. Alternatively, perhaps integrating term by term? Because sometimes products of linear terms in the denominator can be related to integrals. Let me think.\n",
      "\n",
      "For example, 1/(n(n+1)(n+2)(n+3)) can be expressed as an integral. Wait, integrating x^{n} from 0 to 1 is 1/(n+1). So maybe multiple integrals? Let me check.\n",
      "\n",
      "Alternatively, notice that 1/(4k+1)(4k+2)(4k+3)(4k+4) can be written as 1/(4k+1)(4k+2)(4k+3)(4k+4) = 1/(4^4) * 1/((k + 1/4)(k + 1/2)(k + 3/4)(k + 1)). But maybe that's complicating things.\n",
      "\n",
      "Alternatively, maybe use the Beta function or Gamma function? Since products of terms can relate to Gamma functions. But I'm not sure.\n",
      "\n",
      "Alternatively, perhaps consider that 1/(a(a+1)(a+2)(a+3)) can be expressed as 1/(6) [1/(a(a+1)(a+2)) - 1/((a+1)(a+2)(a+3))]. Wait, that's a telescoping decomposition for a product of three terms. Maybe similar for four terms?\n",
      "\n",
      "Yes, perhaps. Let me think. For three terms, 1/(a(a+1)(a+2)) = 1/(2a(a+1)) - 1/(2(a+1)(a+2)). Then, telescoping when summed over a. Similarly, maybe for four terms.\n",
      "\n",
      "So, for four terms, maybe express 1/(a(a+1)(a+2)(a+3)) as a combination of terms that telescope. Let me try to find constants A, B such that:\n",
      "\n",
      "1/(a(a+1)(a+2)(a+3)) = A/(a(a+1)(a+2)) - B/((a+1)(a+2)(a+3))\n",
      "\n",
      "If that's the case, then when we sum over a, it telescopes. Let's solve for A and B.\n",
      "\n",
      "Multiply both sides by a(a+1)(a+2)(a+3):\n",
      "\n",
      "1 = A(a+3) - B(a)\n",
      "\n",
      "So, 1 = A(a + 3) - B a. This must hold for all a, so coefficients of like terms must match.\n",
      "\n",
      "Expanding: 1 = (A - B)a + 3A\n",
      "\n",
      "Therefore, we have the system:\n",
      "\n",
      "A - B = 0 (coefficient of a)\n",
      "\n",
      "3A = 1 (constant term)\n",
      "\n",
      "From the first equation, A = B. From the second, A = 1/3. Therefore, B = 1/3.\n",
      "\n",
      "Thus, we have:\n",
      "\n",
      "1/(a(a+1)(a+2)(a+3)) = (1/3)/(a(a+1)(a+2)) - (1/3)/((a+1)(a+2)(a+3))\n",
      "\n",
      "Therefore, the sum from a=0 to \u221e of 1/(a(a+1)(a+2)(a+3)) would telescope to (1/3)[1/(0*1*2) - lim_{a\u2192\u221e} 1/((a+1)(a+2)(a+3))]. But wait, at a=0, the term 1/(0*1*2) is undefined. Wait, but maybe I need to adjust the lower limit. Wait, actually, when a starts at 0, then the term a(a+1)(a+2) at a=0 is 0, so the original expression would be undefined. Therefore, maybe the decomposition is valid for a starting from 1? Or maybe the original sum starts from a different index.\n",
      "\n",
      "Wait, in our problem, the general term is for k starting at 0, so substituting a = 4k +1, but perhaps not. Let me check. In our problem, we have denominators (4k+1)(4k+2)(4k+3)(4k+4). So if I let a = 4k +1, then a(a+1)(a+2)(a+3) would be (4k+1)(4k+2)(4k+3)(4k+4). Perfect! So in this case, each term in the series is 1/[a(a+1)(a+2)(a+3)] where a = 4k +1.\n",
      "\n",
      "Therefore, using the decomposition above, we can write:\n",
      "\n",
      "1/[a(a+1)(a+2)(a+3)] = (1/3)[1/(a(a+1)(a+2)) - 1/((a+1)(a+2)(a+3))]\n",
      "\n",
      "Therefore, the sum from k=0 to \u221e becomes the sum from a=1 to \u221e of (1/3)[1/(a(a+1)(a+2)) - 1/((a+1)(a+2)(a+3))], since each term corresponds to a = 4k +1, but wait hold on. Wait, when k=0, a=1, k=1, a=5, etc. Wait, but the decomposition is for general a, not necessarily multiples of 4. Wait, no, in our problem, the denominators are (4k+1)(4k+2)(4k+3)(4k+4). So for each k, a is 4k+1, so when k=0, a=1; k=1, a=5; etc. Therefore, the sum over k is equivalent to summing over a = 4k+1, but the decomposition I just did was for a general a, not just multiples of 4. Therefore, perhaps the telescoping sum would still work?\n",
      "\n",
      "Wait, but the decomposition is for each term individually, regardless of a. Therefore, the sum over k from 0 to \u221e of 1/[a(a+1)(a+2)(a+3)] where a=4k+1 is equal to (1/3) times the telescoping sum from a=1 (when k=0) to infinity of [1/(a(a+1)(a+2)) - 1/((a+1)(a+2)(a+3))].\n",
      "\n",
      "But hold on, in the telescoping sum, if we sum from a=1 to N, then the sum would be (1/3)[1/(1*2*3) - 1/((N+1)(N+2)(N+3))]. Therefore, as N approaches infinity, the term 1/((N+1)( \n",
      "Extracted:\n",
      "None\n",
      "********************Question:\n",
      "A bag contains two red beads and two green beads. You reach into the bag and pull out a bead, replacing it with a red bead regardless of the color you pulled out.  What is the probability that all beads in the bag are red after three such replacements? Express your answer as a common fraction.The answer is in the form \frac{m}{n}, where gcd(m, n) = 1. Please provide the value of m + n. \n",
      "Answer:\n",
      "41 \n",
      "Response:\n",
      "Okay, let's try to figure out this probability problem. So, the setup is there's a bag with two red beads and two green beads. Every time I reach in, I pull out a bead, and then replace it with a red bead, no matter what color I pulled out. We need to find the probability that after three such replacements, all the beads in the bag are red. Then express that probability as a reduced fraction m/n and provide m + n. Alright, let's break this down step by step.\n",
      "\n",
      "First, let me understand the process. Initially, there are 2 red (R) and 2 green (G) beads. Each operation: draw a bead, replace it with red. So even if I draw a red bead, I still replace it with red. So the total number of beads remains the same, right? Because I remove one and add one. So the total beads in the bag always stay at 4.\n",
      "\n",
      "Our goal is after three replacements, what's the probability all beads are red. So after each replacement, the number of red beads can stay the same or increase by one, depending on what we drew. Because if we drew a green bead, replacing it with red would increase the number of red beads by 1. If we drew a red bead, replacing it with red doesn't change the count.\n",
      "\n",
      "So let's model the possible states after each replacement. The key is to track the number of red beads over the three steps.\n",
      "\n",
      "Let me denote the number of red beads as a state variable. Initially, we have 2 red beads. Let's call this state 2.\n",
      "\n",
      "After each replacement, the number of red beads can either stay the same or increase by 1. Wait, but actually, the number of red beads can only increase by 1 if we draw a green bead. If we draw a red bead, we replace it with red, so the count remains the same.\n",
      "\n",
      "So the number of red beads can be 2, 3, or 4. Wait, but since we start at 2, and each replacement can add at most 1 red, after three replacements, the maximum number of red beads is 2 + 3 = 5? Wait, but the total number of beads is fixed at 4. So that can't be. Wait, hold on. There's a mistake here. Let me correct that.\n",
      "\n",
      "Wait, initially, there are 4 beads: 2R and 2G. When we replace a bead with red, we are changing the color of the bead we drew. So if we draw a green bead, we replace it with red. Therefore, the number of red beads increases by 1. If we draw a red bead, we replace it with red, so the number of red beads remains the same.\n",
      "\n",
      "So starting at 2 red beads. After each operation, possible number of red beads can be either the same as before or +1. Therefore, after each replacement, the count can increase by 0 or 1. Wait, no. Wait, replacing a bead with red. If you draw a green, you add one red. If you draw red, you replace it with red, which is same. Therefore, each operation can either increase the number of red beads by 1 (if you drew green) or keep it the same (if you drew red). Therefore, starting at 2, after three operations, the number of red beads can be 2, 3, or 4. Because each time you can add 0 or 1. So after three operations, maximum is 2 + 3 = 5? Wait, but there are only 4 beads. So how can there be 5 red beads? There's a contradiction here. So something's wrong.\n",
      "\n",
      "Wait, no. Let me think again. Wait, the total number of beads is always 4. So the number of red beads can't exceed 4. So starting at 2. Each operation, when we replace a bead with red, the number of red beads can either stay the same (if we replaced a red bead) or increase by 1 (if we replaced a green bead). Therefore, after each operation, the number of red beads is either the same as before or increased by 1. So after three operations, the possible number of red beads is 2, 3, or 4. Because starting at 2, after three steps, the maximum increase is 3 (if we replaced a green bead each time), so 2 + 3 = 5, but since there are only 4 beads total, the maximum number of red beads is 4. Therefore, the number of red beads can be 2, 3, or 4 after three replacements. But how does that happen? Let's check.\n",
      "\n",
      "Initially, 2R. Let's say in the first replacement, we draw a green (prob 2/4), then we replace it with red. So now there are 3R. Then in the next replacement, we can draw either red or green. If we draw green, which is now 2 out of 4 beads (since there are 3R and 1G). Wait, no. Wait, after first replacement, we had 3R and 1G. Wait, initially 2R, 2G. After replacing a G with R: 3R, 1G. Then, in the second replacement, the probability of drawing R is 3/4, G is 1/4. If we draw R, replace it with R: still 3R, 1G. If we draw G, replace it with R: now 4R, 0G. So after second replacement, we can have either 3R or 4R.\n",
      "\n",
      "If we had 3R in the second replacement, then for the third replacement: probability of drawing R is 3/4, G is 1/4. Again, replacing with R. So if we draw R, still 3R; if G, now 4R.\n",
      "\n",
      "So, in order to have all red after three replacements, we need to have replaced a green bead in each of the three operations. Wait, but starting with 2G. Let's track the possibilities.\n",
      "\n",
      "But maybe we can model this as a Markov chain, keeping track of the number of red beads after each step. Let's denote the number of red beads as k, which can be 2, 3, or 4.\n",
      "\n",
      "Let me think recursively. Let's define P(n, k) as the probability that after n replacements, there are k red beads.\n",
      "\n",
      "Our initial state is P(0, 2) = 1, since we start with 2 red beads.\n",
      "\n",
      "Now, for each replacement step, we can compute the probabilities.\n",
      "\n",
      "For each step, the number of red beads can either stay the same or increase by 1. The probability of increasing by 1 depends on the number of green beads present, which is total beads (4) minus the current number of red beads.\n",
      "\n",
      "So, for example, if we have k red beads, then the number of green beads is 4 - k. So the probability of drawing a green bead in the next replacement is (4 - k)/4, which would lead to k + 1 red beads. The probability of not drawing a green bead (i.e., drawing a red bead) is k/4, leading to remaining at k red beads.\n",
      "\n",
      "Therefore, the recurrence relations would be:\n",
      "\n",
      "For each step n >= 1,\n",
      "\n",
      "P(n, k) = P(n-1, k) * (k/4) + P(n-1, k-1) * ((4 - (k - 1))/4)\n",
      "\n",
      "Wait, let's check that. If we want to have k red beads at step n, then it could have come from either:\n",
      "\n",
      "- Having k red beads at step n-1 and then drawing a red bead (so we keep k red beads), or\n",
      "\n",
      "- Having k - 1 red beads at step n-1 and then drawing a green bead (so we add one red, increasing from k - 1 to k).\n",
      "\n",
      "Yes, that seems right.\n",
      "\n",
      "So, let's formalize that:\n",
      "\n",
      "P(n, k) = P(n-1, k) * [k/4] + P(n-1, k - 1) * [ (4 - (k - 1))/4 ]\n",
      "\n",
      "Simplify the second term: 4 - (k - 1) = 5 - k. So:\n",
      "\n",
      "P(n, k) = (k/4) * P(n-1, k) + ((5 - k)/4) * P(n-1, k - 1)\n",
      "\n",
      "But we have to consider the possible values of k. Since the number of red beads can increase by at most 1 each step, starting from 2, after n steps \n",
      "Extracted:\n",
      "None\n",
      "********************Question:\n",
      "A triangle has an area of 114 square units and sides of integer length. What is the perimeter of the triangle? \n",
      "Answer:\n",
      "76 \n",
      "Response:\n",
      "Okay, so I need to find the perimeter of a triangle with an area of 114 square units where all the sides are integers. Hmm, let's see. First, I remember that the area of a triangle can be calculated using Heron's formula when you know the lengths of all three sides. Heron's formula states that the area is the square root of [s(s-a)(s-b)(s-c)], where s is the semi-perimeter, and a, b, c are the sides. The semi-perimeter is just (a + b + c)/2.\n",
      "\n",
      "Since the area is given as 114, then according to Heron's formula:\n",
      "\n",
      "\u221a[s(s-a)(s-b)(s-c)] = 114\n",
      "\n",
      "If I square both sides, that becomes:\n",
      "\n",
      "s(s-a)(s-b)(s-c) = 114\u00b2 = 12996\n",
      "\n",
      "Now, the challenge is to find integer values for a, b, c such that when I plug them into this equation, the product equals 12996, and then find the perimeter a + b + c.\n",
      "\n",
      "But how do I find such integers? Maybe I can look for triangles with integer sides that have a large area. The maximum area for a triangle with integer sides would be when it's a right-angled triangle, because the area would be (base * height)/2, and the legs can be the base and height. But maybe not necessarily right-angled. Let's think.\n",
      "\n",
      "Alternatively, maybe I can consider that for a triangle with given integer sides, the semi-perimeter s is (a + b + c)/2, so the perimeter P = a + b + c = 2s.\n",
      "\n",
      "So, substituting s = P/2 into Heron's formula:\n",
      "\n",
      "\u221a[(P/2)(P/2 - a)(P/2 - b)(P/2 - c)] = 114\n",
      "\n",
      "Squaring both sides again:\n",
      "\n",
      "(P/2)(P/2 - a)(P/2 - b)(P/2 - c) = 114\u00b2 = 12996\n",
      "\n",
      "But since P = a + b + c, then (P/2 - a) = (b + c - a)/2, and similarly for the others. Let me denote x = (a + b + c)/2 - a = (b + c - a)/2, y = (a + c - b)/2, z = (a + b - c)/2. These are the variables in Heron's formula. So the product becomes sxyz = 12996, where s = P/2.\n",
      "\n",
      "But I also know that x, y, z must be positive real numbers because they are half the sums of the sides minus each side, which for a triangle must be positive (triangle inequality). Since a, b, c are integers, x, y, z could be integers or half-integers.\n",
      "\n",
      "So sxyz = 12996. Since s is (a + b + c)/2, and the perimeter is an integer (sum of integers), s is either integer or half-integer.\n",
      "\n",
      "This seems a bit abstract. Maybe I should look for possible integer values of a, b, c such that the area is 114. Alternatively, maybe there's a standard triangle with area 114. For example, if it's a right-angled triangle, then area is (product of legs)/2. So, if I can find two integers whose product is 228 (since 2*114=228), then the legs could be factors of 228. Let's check the factors of 228.\n",
      "\n",
      "228 factors: 1x228, 2x114, 3x76, 4x57, 6x38, 12x19. So possible sides could be (1, 228, ...), but wait, the hypotenuse would be sqrt(1\u00b2 + 228\u00b2) which is not integer. Similarly, other pairs: 2 and 114, hypotenuse sqrt(2\u00b2 + 114\u00b2) which is also not integer. 3 and 76: same thing. 4 and 57: same. 6 and 38: sqrt(6\u00b2 + 38\u00b2) = sqrt(36 + 1444) = sqrt(1480) \u2248 38.47, not integer. 12 and 19: sqrt(144 + 361) = sqrt(505) \u2248 22.47, not integer. So none of these are integer hypotenuses, so maybe there's no right-angled triangle with integer sides and area 114. Therefore, maybe the triangle isn't right-angled.\n",
      "\n",
      "So back to Heron's formula. Let's think about possible perimeters. Since the area is relatively large (114), the sides must be relatively large as well. Let's consider some common triangles.\n",
      "\n",
      "Alternatively, perhaps we can find a triangle where the base and height are such that (base * height)/2 = 114. So base * height = 228. So if we can find integer sides where one side is the base and the corresponding height is an integer (or rational number leading to integer sides), but since sides are integers, maybe there are constraints.\n",
      "\n",
      "But the problem is that height h corresponding to base a is given by h = 2*Area / a = 228 / a. So h must be a rational number. But the height depends on the other sides. However, since we don't know which side is the base, maybe it's complicated.\n",
      "\n",
      "Alternatively, maybe think of triangles with integer sides and integer area. For example, Heronian triangles. So maybe look up or think of Heronian triangles with area 114.\n",
      "\n",
      "But since this is a problem-solving scenario, I need to work it out.\n",
      "\n",
      "Let me consider that the semi-perimeter s = (a + b + c)/2. Then the area squared is s(s-a)(s-b)(s-c) = 114\u00b2 = 12996.\n",
      "\n",
      "Therefore, s(s - a)(s - b)(s - c) = 12996.\n",
      "\n",
      "But s = (a + b + c)/2. Let me denote that as P/2 where P is the perimeter.\n",
      "\n",
      "But without knowing P, it's a bit tricky. Let's think about possible integer values.\n",
      "\n",
      "Alternatively, maybe consider that the product s(s - a)(s - b)(s - c) factors into integers. Since s, (s - a), (s - b), (s - c) are all rational numbers (since a, b, c are integers, s is either integer or half-integer). But perhaps if we can find s as a rational number such that when multiplied by other terms gives 12996.\n",
      "\n",
      "Alternatively, maybe think of possible perimeters and check if they can satisfy Heron's formula. But how to narrow down the possibilities?\n",
      "\n",
      "Let me think. Let's think of possible triangles. Let's start with some common triangles.\n",
      "\n",
      "For example, a triangle with sides 10, 17, 21. Wait, maybe not. Let me think of a triangle with area 114. Alternatively, let's consider that for maximum area, given two sides, the area is maximized when the angle between them is 90 degrees, but that's just a right-angled triangle. But earlier, we saw that doesn't seem to work.\n",
      "\n",
      "Alternatively, maybe take a triangle with sides that are multiples. For example, if we consider a triangle with sides a, b, c, then the area is 114. Let me think of a triangle with sides 13, 14, 15. Wait, that triangle has an area of 84, right? Let me check:\n",
      "\n",
      "s = (13 + 14 + 15)/2 = 21\n",
      "\n",
      "Area = \u221a[21(21-13)(21-14)(21-15)] = \u221a[21*8*7*6] = \u221a[7056] = 84. Yes, so that's 84. So area 84. To get 114, which is 84*(114/84) \u2248 1.357 times larger. Maybe scaling the triangle? But scaling would scale all sides by the same factor, and area by the square of that factor. Let's see \n",
      "Extracted:\n",
      "None\n",
      "********************Question:\n",
      "Find the $2019^{th}$ strictly positive integer $n$ such that $\\binom{2n}{n}$ is not divisible by $5$. \n",
      "Answer:\n",
      "37805 \n",
      "Response:\n",
      "Okay, so I need to find the 2019th positive integer n such that the binomial coefficient C(2n, n) is not divisible by 5. Hmm, let's think. I remember something about Lucas' Theorem which deals with binomial coefficients modulo a prime number. Since 5 is a prime, maybe that's useful here. \n",
      "\n",
      "First, Lucas' Theorem states that for a prime p, and non-negative integers m and n with base p expansions m = m0 + m1*p + ... + mk*p^k and n = n0 + n1*p + ... + nk*p^k, the binomial coefficient C(m, n) modulo p is the product of the binomial coefficients C(mi, ni) for each i. If any of the ni > mi, then the binomial coefficient is zero modulo p. So in this case, if we want C(2n, n) not divisible by 5, then for every digit in the base-5 expansion of n, the corresponding digit in 2n must be at least as large. Wait, let me clarify.\n",
      "\n",
      "Let me denote the base-5 expansions. Let's think of 2n and n in base 5. Let\u2019s say n has base-5 digits a_0, a_1, ..., a_k. Then 2n would have digits 2a_0, 2a_1, ..., 2a_k, but since we're in base 5, we have to consider carries. But Lucas' Theorem applies when we look at the digits of the upper and lower indices in their base p expansions. Wait, actually, Lucas' Theorem says that C(m, n) \u2261 product_{i=0}^k C(m_i, n_i) mod p, where m_i and n_i are the digits of m and n in base p. So if any n_i > m_i, then the binomial coefficient is 0 mod p. Therefore, for C(2n, n) not divisible by 5, we need that in every digit position of n's base-5 expansion, the corresponding digit in 2n's base-5 expansion is at least as large. \n",
      "\n",
      "But wait, the upper index here is 2n, and the lower index is n. So let's consider 2n in base 5 and n in base 5. Let me denote the digits of n in base 5 as (a_0, a_1, ..., a_k), so that n = a_0 + a_1*5 + ... + a_k*5^k. Then 2n = 2a_0 + 2a_1*5 + ... + 2a_k*5^k, but this may not be a valid base-5 representation because each digit could be more than 4. Wait, no, because multiplying by 2 can make the digits up to 8, but in base 5, digits must be 0-4. Therefore, we need to consider carries when doubling n.\n",
      "\n",
      "But Lucas' Theorem applies when we have the digits of the upper and lower indices in base p. However, since 2n is not necessarily the upper index unless we have specific relations. Wait, no. Wait, the binomial coefficient is C(2n, n), so the upper index is 2n, and the lower index is n. Therefore, to apply Lucas' Theorem, we need to write both 2n and n in base 5. Let me denote n in base 5 as (a_0, a_1, ..., a_k), so that 2n in base 5 would be some digits (b_0, b_1, ..., b_m). Then, according to Lucas' Theorem, C(2n, n) \u2261 product_{i=0}^m C(b_i, a_i) mod 5. For this product to not be 0 mod 5, each C(b_i, a_i) must not be 0 mod 5. That is, for each digit a_i in the base-5 expansion of n, the corresponding digit b_i in the base-5 expansion of 2n must be at least a_i. \n",
      "\n",
      "But here's the thing: the digits of 2n in base 5 depend on the digits of n. Because when you double a number in base 5, you have to perform the carry operations. Therefore, if we can ensure that doubling each digit a_i of n (without considering carries) results in a digit b_i that is at least a_i, then even after considering carries, the digits of 2n in base 5 would still be sufficient? Wait, maybe not directly. Let me think again.\n",
      "\n",
      "For example, take a digit a_i in base 5. When you double n, each digit a_i is doubled, but if doubling causes a carryover to the next higher digit, then the current digit becomes 2a_i mod 5, and there's a carry of floor(2a_i / 5). However, for Lucas' Theorem, the key is that in each position, the digit of 2n (after considering carries) must be at least as large as the corresponding digit of n. Wait, but how can we ensure that?\n",
      "\n",
      "Let me take an example. Let's say n has a base-5 digit a. Then, when doubling, the digit in 2n at that position is (2a - 5*c), where c is the carryover from the previous digit. But since carries depend on previous digits, this seems complicated. However, if we can ensure that 2a >= a for each digit a, then when we don't have any carryover, the digit in 2n would be at least a. However, if there's a carryover, the digit in 2n could be smaller. Wait, for example, if a = 3, then doubling gives 6, which in base 5 is 1*5 + 1, so the digit would be 1 with a carryover of 1. But the original digit was 3, and the current digit is 1, which is less than 3. Therefore, in this case, the condition would fail. Therefore, to prevent this, we need that when doubling each digit a_i, there is no carryover, which would require that 2a_i < 5, i.e., a_i < 5/2, so a_i \u2264 2. Because if a_i is 0,1,2, doubling gives 0,2,4 which are all less than 5, so no carryover. But if a_i is 3 or 4, doubling would be 6 or 8, which are 1*5 + 1 and 1*5 + 3, so carryover 1. Therefore, if all digits of n in base 5 are 0,1, or 2, then doubling each digit would not cause a carryover, and hence the digits of 2n in base 5 would be exactly 2a_i. Therefore, in each position, the digit of 2n is 2a_i, and since a_i is 0,1,2, then 2a_i is 0,2,4, which are all greater or equal to a_i (since 0 >=0, 2 >=1, 4 >=2). Therefore, in this case, for each digit, C(b_i, a_i) would be non-zero modulo 5.\n",
      "\n",
      "Wait, but if all digits of n in base 5 are 0, 1, or 2, then 2n will have digits 0, 2, 4 in base 5, and thus C(4, 2), C(2, 1), C(0, 0) would all be non-zero modulo 5. Therefore, in that case, C(2n, n) is not divisible by 5. Therefore, the problem reduces to finding numbers n whose base-5 expansions contain only digits 0, 1, 2. Then, these n satisfy the condition. So the numbers n are those numbers which in base 5 do not have digits 3,4. \n",
      "\n",
      "Therefore, the problem reduces to finding the 2019th number in the sequence of numbers whose base-5 representations contain only 0,1,2. \n",
      "\n",
      "So, for example, in base 5, numbers like 0 (which is 0...0), 1 (1), 2 (2), 5 (which is 10 in base 5), 6 (11), 7 (12), 10 (20), etc. \n",
      "\n",
      "Therefore, if \n",
      "Extracted:\n",
      "None\n",
      "********************Question:\n",
      "Dragoons take up $1 \\times 1$ squares in the plane with sides parallel to the coordinate axes such that the interiors of the squares do not intersect. A dragoon can fire at another dragoon if the difference in the $x$-coordinates of their centers and the difference in the $y$-coordinates of their centers are both at most $6$, regardless of any dragoons in between. For example, a dragoon centered at $(4, 5)$ can fire at a dragoon centered at the origin, but a dragoon centered at $(7, 0)$ cannot. A dragoon cannot fire at itself. What is the maximum number of dragoons that can fire at a single dragoon simultaneously? \n",
      "Answer:\n",
      "168 \n",
      "Response:\n",
      "Okay, so I need to figure out the maximum number of dragoons that can all fire at a single dragoon. The condition is that for each dragoon firing at another, the difference in their x-coordinates and the difference in their y-coordinates must both be at most 6. So, if there's a target dragoon at some point (a, b), then any firing dragoon must be within a 6-unit range in both the x and y directions. That means the firing dragoons can be anywhere in the rectangle from (a-6, b-6) to (a+6, b+6). But since the dragoons are on 1x1 squares with non-overlapping interiors, their centers must be at integer coordinates, right? Because each dragoon is a square aligned with the axes, so their centers would be at half-integer points? Wait, hold on. If the dragoons are 1x1 squares with sides parallel to the axes, then each dragoon occupies a square. The center of each square would be at (x + 0.5, y + 0.5) where (x, y) are the lower-left corners of the squares. But the problem says \"the interiors of the squares do not intersect,\" so they can't overlap. But it doesn't specify the centers are at integer coordinates. However, when they talk about the centers, maybe they mean the centers are at points with integer coordinates? Wait, maybe not necessarily. Wait, no, the problem doesn't specify where the centers are. Hmm, but the examples given: a dragoon at (4,5) can fire at the origin. The origin would be a center of a dragoon, so that dragoon is centered at (0,0). So centers can be at any real coordinates? Wait, but how can they place them without overlapping? If they are 1x1 squares with sides parallel to the axes, their centers must be at positions where the squares don't overlap. So for example, if a dragoon is centered at (x, y), then the square it occupies is from (x - 0.5, y - 0.5) to (x + 0.5, y + 0.5). So two dragoons can't overlap, so the distance between their centers must be at least 1 unit apart in either the x or y direction? Wait, no. If their squares can't overlap, their centers can be as close as 1 unit apart. For example, two squares adjacent horizontally: centers at (0, 0) and (1.5, 0) would be adjacent, but if they are centered at (0, 0) and (1, 0), the squares from (-0.5, -0.5) to (0.5, 0.5) and (0.5, -0.5) to (1.5, 0.5) would touch at the edge but not overlap. So their centers can be 1 unit apart. So centers can be at any coordinates as long as their squares don't overlap. But the problem is asking about the maximum number of dragoons that can fire at a single dragoon. So each firing dragoon's center must be within a 6x6 square around the target dragoon's center. But wait, the firing condition is that the difference in x-coordinates and the difference in y-coordinates are both at most 6. So if the target is at (a, b), then any dragoon that can fire at it must have its center in the square from (a - 6, b - 6) to (a + 6, b + 6). But since dragoons are placed on non-overlapping squares, how does that affect the number of dragoons that can be placed in that region?\n",
      "\n",
      "Wait, but the problem is asking for the maximum number of dragoons that can all fire at a single dragoon. So, given a target dragoon, how many other dragoons can be positioned such that each is within 6 units in both x and y directions from the target. But since the dragoons can't overlap, each firing dragoon must be placed in a distinct 1x1 square that doesn't overlap with others. However, the firing dragoons can be anywhere within that 12x12 square (from -6 to +6 in each axis), but their squares can't overlap with each other or with the target dragoon's square.\n",
      "\n",
      "But the target dragoon's square is also in that region. So the total number of dragoons that can fire at the target is the number of non-overlapping 1x1 squares that can fit in the 12x12 square area around the target, minus one (the target itself). But wait, how many non-overlapping 1x1 squares can fit in a 12x12 area?\n",
      "\n",
      "But actually, since the dragoons can be placed anywhere as long as their squares don't overlap, the maximum number would be the maximum number of non-overlapping 1x1 squares that can be placed in a 12x12 square region. However, the target dragoon's square is also part of that region. So the maximum number of dragoons that can fire at the target is the number of dragoons that can fit in the 12x12 area minus one (excluding the target). But to maximize, we need to arrange as many dragoons as possible in that 12x12 square. But since each dragoon occupies a 1x1 square, the maximum number would be the area of the region divided by the area of each dragoon, but since they can't overlap, the maximum number is the floor of the area. However, the region is 12 units in each direction, so the area is 144. Since each dragoon takes 1 unit\u00b2, you could fit up to 144 dragoons. But since the target dragoon is already there, the other dragoons would be 143. But wait, but the target's square is within the 12x12 square. But the firing dragoons can't be at the target's position, because they can't fire at themselves. So the maximum number is 143. But that seems too straightforward. But the answer might not be 143. Because maybe the 12x12 square is not entirely available. Wait, the firing dragoons have to be within 6 units in both directions. So if the target is at (0,0), then any dragoon firing at it must have center coordinates (x, y) where |x - 0| \u2264 6 and |y - 0| \u2264 6. Therefore, the firing dragoons can be anywhere in the square [ -6, 6 ] \u00d7 [ -6, 6 ] in terms of their centers. However, each dragoon's square spans from (x - 0.5, y - 0.5) to (x + 0.5, y + 0.5). Therefore, the entire area occupied by the firing dragoons would be a 12x12 square (from -6 - 0.5 to 6 + 0.5 in each axis). Wait, no. If the centers of the firing dragoons are within [ -6, 6 ] in both x and y, then the squares themselves extend from (x - 0.5, y - 0.5) to (x + 0.5, y + 0.5). So the entire area covered by all firing dragoons and the target would be from (-6 - 0.5, -6 - 0.5) to (6 + 0.5, 6 + 0.5). So that's a 13x13 square. Wait, but the target dragoon is at (a, b). Let me think again.\n",
      "\n",
      "Let me take the target dragoon at (0, 0). Its square is from (-0.5, -0.5) to (0.5, 0.5). Any firing dragoon must have its center at (x, y) where |x| \u2264 6 and |y| \u2264 6. Therefore, their squares extend from (x - 0.5, y - 0.5) to (x + 0.5, y + 0.5). So the leftmost part of a firing dragoon's square would be at x = -6 - 0.5 = -6.5, and the rightmost at x = 6 + \n",
      "Extracted:\n",
      "None\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "TrainOutput(global_step=100, training_loss=0.00013000429244129917, metrics={'train_runtime': 10017.8679, 'train_samples_per_second': 0.04, 'train_steps_per_second': 0.01, 'total_flos': 0.0, 'train_loss': 0.00013000429244129917})"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# For optional training + evaluation\n",
    "# new_dataset = dataset.train_test_split(test_size = 0.01)\n",
    "\n",
    "trainer = GRPOTrainer(\n",
    "    model = model,\n",
    "    processing_class = tokenizer,\n",
    "    reward_funcs = [\n",
    "        match_format_exactly,\n",
    "        match_format_approximately,\n",
    "        check_answer,\n",
    "        check_numbers,\n",
    "    ],\n",
    "    args = training_args,\n",
    "    train_dataset = dataset,\n",
    "\n",
    "    # For optional training + evaluation\n",
    "    # train_dataset = new_dataset[\"train\"],\n",
    "    # eval_dataset = new_dataset[\"test\"],\n",
    ")\n",
    "trainer.train()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "tlaUdxC_VHpz"
   },
   "source": [
    "<a name=\"Inference\"></a>\n",
    "### Inference\n",
    "Now let's try the model we just trained! First, let's first try the model without any GRPO trained:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 204,
     "referenced_widgets": [
      "9cb60ac233904684b51285ce2450e1b3",
      "918b1566b532479ab6148691060f7e0b",
      "a8add928efd44bf587afdf7589ec2022",
      "0640df8084834e6cbbb253542b425713",
      "19b8a853b0f04343909eb0ba78c59abb",
      "3bd938c157fa47c190238308f4ef200c",
      "b428860ed4ac4dc6aa3079407f274677",
      "0a3cebbc92cd4bf4a3f1e80e5477da51",
      "a12936d0a05d43438307b21131eea6ea",
      "9787cf9f286644ff8820e734144f9310",
      "447ac050528a4d9db8091336b7821696",
      "89bed27d0a444564bff6428cf415b81e",
      "eeae3b8a44794016ae7c8503a560f368",
      "980ace7afe8149769b4ee5a55e73a6fa",
      "d7a600301c754c55961b2ba7f417d933",
      "ab7c4885ec88403a90c63994738252b0",
      "191f1528584a49c0bca19438a78b281a",
      "24e66f615fb24b64b4731468f55b0cd5",
      "9425cd57d6f745d4ac98496f1bcfe0e3",
      "e01eafecda214c73b14cfe7fd684d2bf",
      "de5481bf18ed43ef99d667e8079bdce4",
      "1750e702b6704b3c8833fbb0531e5cba"
     ]
    },
    "id": "qtcz_lpbVC92",
    "outputId": "109a0e03-4d1d-4af6-f630-bec879a37be1"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "9cb60ac233904684b51285ce2450e1b3",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Adding requests:   0%|          | 0/1 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "89bed27d0a444564bff6428cf415b81e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Processed prompts:   0%|          | 0/1 [00:00<?, ?it/s, est. speed input: 0.00 toks/s, output: 0.00 toks/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.google.colaboratory.intrinsic+json": {
       "type": "string"
      },
      "text/plain": [
       "\" - Answers\\nMath and Arithmetic\\nAlgebra\\nWhat is the sqrt of 101?\\nWiki Answers\\nAnonymous\\nLvl 1\\n2020-09-19 21:30:05\\nAnswer\\n10.04987562112089...\\nWiki User\\n2010-04-08 15:44:32\\nThis is an irrational number. sqrt(101) is approximately equal to 10.0498756211...\\nIt is approximately 10.05.\\nRelated Questions\\nWhat is the square root of 101?\\nIt is an irrational number which is approximately 10.04987562...\\nWhat is the square root of 101 squared?\\nsqrt(101\u00b2) = 101. The square root and the square cancel each other out.\\nWhat is the square root of 101 approximated to the nearest tenth?\\nThe square root of 101 is approximately 10.0498756211... which is approximately 10.05 to the nearest hundredth, 10.0 to the nearest tenth.\\nWhat is the square root of 101 to the nearest hundredth?\\nApproximately 10.05\\nWhat is the square root of 101 rounded to the nearest hundredth?\\napproximately 10.05\\nWhat is the square root of 101?\\nsqrt(101) is approx 10.0498756211\\nWhat is the square root of 101 rounded to the nearest tenth?\\n10.0\\nWhat is the square root of 101?\\nsqrt(101) \u2248 10.04987562...\\nWhat is the square root of 101 to the nearest hundredth?\\n10.05\\nWhat is the square root of 101 in exact form?\\nIt is sqrt(101). It is irrational.\\nWhat is the square root of -101?\\nsqrt(-101) = i*sqrt(101) where i is the imaginary unit.\\nThe square root of 101?\\nIt is an irrational number. sqrt(101) \u2248 10.0498756211\\nWhat is the square root of 101 and 101 squared?\\nsqrt(101) \u2248 10.05\\nsqrt(101)2 = 101\\nWhat is the square root of 101 rounded to the nearest hundredth?\\n10.05\\nWhat is the square root of 101 in its simplest form?\\nsqrt(101) is already in its simplest form. 101 is a prime number, so it has no square factors.\\nWhat is the square root of 101 in fraction form?\\nIt is irrational. So, sqrt(101) cannot be represented as a fraction or a terminating decimal.\\nWhat is the value of the expression sqrt-101?\\nIt is sqrt(101) i, where i is the imaginary unit.\\nWhat is the square root of 101?\\nThe square root of 101 is 10.049875621...\\nHow is the square root of 101 an irrational number?\\nIt is an irrational number because it can't be expressed as a fraction and the square root of any prime number is irrational and 101 is a prime number.\\nWhat is the square root of 101?\\nIt is irrational. Approximately 10.04987562...\\nWhat is the square root of 101?\\nThe square root of 101 is 10.04987562112089...\\nWhat is the square root of 101?\\nThe square root of 101 is an irrational number which is approximately equal to 10.05\\nIs the square root of 101 irrational?\\nYes. Because 101 is a prime number, its square root is irrational.\\nWhat is the square root of 101 to the nearest hundredth?\\nIt's 10.05\\nWhat is the square root of 101 rounded to the nearest hundredth?\\nIt is 10.05\\nWhat is the square root of 101 rounded to the nearest tenth?\\nIt is 10.0\\nWhat is the square of 101?\\nThe square of 101 is 101*101 = \""
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text = \"What is the sqrt of 101?\"\n",
    "\n",
    "from vllm import SamplingParams\n",
    "sampling_params = SamplingParams(\n",
    "    temperature = 1.0,\n",
    "    top_k = 50,\n",
    "    max_tokens = 1024,\n",
    ")\n",
    "output = model.fast_generate(\n",
    "    [text],\n",
    "    sampling_params = sampling_params,\n",
    "    lora_request = None,\n",
    ")[0].outputs[0].text\n",
    "\n",
    "output"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Colxz9TAVMsi"
   },
   "source": [
    "And now with the LoRA we just trained with GRPO - we first save the LoRA first!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "AL-BcuB1VLIv"
   },
   "outputs": [],
   "source": [
    "model.save_lora(\"grpo_saved_lora\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "a4LMOBl8boGX"
   },
   "source": [
    "Verify LoRA is actually trained!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "4SfdI-ERbpiw"
   },
   "outputs": [],
   "source": [
    "from safetensors import safe_open\n",
    "\n",
    "tensors = {}\n",
    "with safe_open(\"grpo_saved_lora/adapter_model.safetensors\", framework = \"pt\") as f:\n",
    "    # Verify both A and B are non zero\n",
    "    for key in f.keys():\n",
    "        tensor = f.get_tensor(key)\n",
    "        n_zeros = (tensor == 0).sum() / tensor.numel()\n",
    "        assert(n_zeros.item() != tensor.numel())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "CwpbwnDBVRLg"
   },
   "source": [
    "Now we load the LoRA and test:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 204,
     "referenced_widgets": [
      "6203a8bbc900431ca94fad00b1d5b918",
      "880f2a31478b4b3e8a2e3de57fef86a5",
      "1f62ba67ecbe4ba881fc00065388059b",
      "757e0d30919c476f9e38dee5813dbd8e",
      "479994686bf8494680bbf6d47cc9454a",
      "900692da18a64fc086ecfd4fb9d85aee",
      "69095aa4c9df41d180f5bd20cdf4e918",
      "886b2499a0a74b468ca17fc0fc815cca",
      "c72b119f914542388f3355d8e6f15612",
      "81de29c6a54b40b78766cd53b78476ed",
      "b2f7343578594bfca273c3784f231717",
      "fb62611d6475416ba95176e844ea87d7",
      "53dd4d9ca6d348eab38fc37ee0d22b5b",
      "6245fc08888d4121853db773b736376e",
      "120fe2f191e24f9b874aaa8be103b776",
      "e5b11e5b2f9747d6855edf61a0ee1f07",
      "cd689d9ee3494bd1acf0026235be7c84",
      "24d4909da1b64610815028bae5c5d0bf",
      "67b97a89ee974139ae3aae7a26ea6b73",
      "c2578de4adbd4d1e926dd67b92fc9e7f",
      "28bec2fbc6a343a58c2105f5a0cb5787",
      "89a46001ff4d45329eab28d6c2cbfcad"
     ]
    },
    "id": "zf_OY5WMVOxF",
    "outputId": "f5a0419a-ac86-4838-b2fd-f9e49906ce61"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "6203a8bbc900431ca94fad00b1d5b918",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Adding requests:   0%|          | 0/1 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "fb62611d6475416ba95176e844ea87d7",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Processed prompts:   0%|          | 0/1 [00:00<?, ?it/s, est. speed input: 0.00 toks/s, output: 0.00 toks/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.google.colaboratory.intrinsic+json": {
       "type": "string"
      },
      "text/plain": [
       "\"Okay, so I need to find the square root of 101. Hmm, let's see. I know that the square of 10 is 100, right? So 10 times 10 is 100. That means the square root of 100 is 10. But 101 is just a bit more than 100. So the square root of 101 should be a little bit more than 10. Maybe around 10.05 or something? Wait, but how do I calculate that more accurately?\\n\\nLet me think. Maybe I can use a method like Newton's iteration? I remember that's a way to approximate square roots. The formula is x_{n+1} = (x_n + S/x_n)/2, where S is the number you're taking the square root of. So in this case, S is 101. Let's start with an initial guess. Since I know sqrt(100) is 10, I'll use 10 as my first guess, x\u2080.\\n\\nSo, x\u2081 = (10 + 101/10)/2. Let's compute that. 101 divided by 10 is 10.1. Adding 10 and 10.1 gives 20.1. Dividing by 2, that's 10.05. So x\u2081 is 10.05. That seems close. Now let's do another iteration. \\n\\nx\u2082 = (10.05 + 101/10.05)/2. Let's calculate 101 divided by 10.05. Hmm, 10.05 times 10 is 100.5. So 10.05*10 = 100.5. The difference between 101 and 100.5 is 0.5. So 0.5 divided by 10.05 is approximately 0.0497. So 10.05 + 0.0497 is about 10.0997. Therefore, 101 divided by 10.05 is approximately 10.0997. Adding that to 10.05 gives 10.05 + 10.0997 = 20.1497. Dividing by 2, that's 10.07485. So x\u2082 is approximately 10.07485.\\n\\nNow let's calculate x\u2083. So x\u2083 = (10.07485 + 101/10.07485)/2. Let me compute 101 divided by 10.07485. Let's see. 10.07485 times 10 is 100.7485. Subtracting that from 101 gives 0.2515. So 0.2515 divided by 10.07485 is approximately 0.02495. So 10.07485 + 0.02495 is approximately 10.0998. Wait, no, that's not right. Wait, actually, 101 divided by 10.07485 is 10.07485 multiplied by some number. Wait, maybe I should approach this differently.\\n\\nAlternatively, since 10.07485 squared is approximately... Wait, maybe this is getting too complicated. Let me use a calculator-like approach. Let's approximate 101 / 10.07485. Let's note that 10.07485 * 10 = 100.7485. Then 101 - 100.7485 = 0.2515. So to find how much more than 10 we need to multiply 10.07485 to get 101. So let me call this value y. So y = 10 + (0.2515 / 10.07485). Wait, but actually, y is 101 / 10.07485. Since 10.07485 * 10 = 100.7485, and we need to reach 101, so we need an additional 0.2515. So how much more than 10 is y?\\n\\nSo y = 10 + (0.2515 / 10.07485). Let me compute 0.2515 divided by 10.07485. That's approximately 0.02495. So y \u2248 10 + 0.02495 = 10.02495. Therefore, 101 / 10.07485 \u2248 10.02495.\\n\\nWait, but that can't be right because if you multiply 10.07485 by 10.02495, you should get approximately 101. Let's check: 10 * 10.07485 = 100.7485, and 0.02495 * 10.07485 \u2248 0.2515. So adding those gives 100.7485 + 0.2515 = 101. So yes, that works. So 101 divided by 10.07485 is approximately 10.02495. \\n\\nTherefore, x\u2083 = (10.07485 + 10.02495)/2 = (20.0998)/2 = 10.0499. Wait, but that's decreasing from the previous x\u2082 of 10.07485 to x\u2083 of 10.0499? That seems like it's oscillating. Wait, maybe I made a mistake here. Because in Newton's method, the iterations should converge. Let me check again.\\n\\nWait, no. Wait, if we have x\u2082 = 10.07485, then 101 / x\u2082 is approximately 10.02495. So when we compute x\u2083 as the average of x\u2082 and (101/x\u2082), that's (10.07485 + 10.02495)/2. That would be approximately (20.0998)/2 = 10.0499, which is actually between x\u2082 and the previous iteration. Wait, but x\u2081 was 10.05, then x\u2082 was 10.07485, and then x\u2083 is going back to 10.0499. That seems like it's oscillating around the actual value. Maybe I need more iterations.\\n\\nWait, perhaps my calculation was wrong. Let me check again. If x\u2082 is 10.07485, then 101 divided by 10.07485. Let's calculate 10.07485 * 10.07485. Wait, that's squaring x\u2082. Let's see: 10.07485 squared. 10 squared is 100, 0.07485 squared is about 0.0056, and the cross term is 2*10*0.07485 = 1.497. So total is approximately 100 + 1.497 + 0.0056 \u2248 101.5026. Oh, so x\u2082 squared is approximately 101.5, which is higher than 101. So the square root should be a bit less than x\u2082. But when we divided 101 by x\u2082, we got approximately 10.02495, so the average of x\u2082 (10.07485) and 10.02495 is (10.07485 + 10.02495)/2 = 10.0499, which is lower than x\u2082. So that's moving towards the actual square root. So let's compute x\u2083 as 10.0499.\\n\\nNow compute x\u2084. So x\u2084 = (x\u2083 + 101/x\u2083)/2. Let's compute 101 divided by 10.0499. Let's see, 10\""
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "messages = [\n",
    "    {\"role\": \"system\", \"content\": system_prompt},\n",
    "    {\"role\": \"user\",   \"content\": \"What is the sqrt of 101?\"},\n",
    "]\n",
    "\n",
    "text = tokenizer.apply_chat_template(\n",
    "    messages,\n",
    "    add_generation_prompt = True, # Must add for generation\n",
    "    tokenize = False,\n",
    ")\n",
    "from vllm import SamplingParams\n",
    "sampling_params = SamplingParams(\n",
    "    temperature = 1.0,\n",
    "    top_k = 50,\n",
    "    max_tokens = 2048,\n",
    ")\n",
    "output = model.fast_generate(\n",
    "    text,\n",
    "    sampling_params = sampling_params,\n",
    "    lora_request = model.load_lora(\"grpo_saved_lora\"),\n",
    ")[0].outputs[0].text\n",
    "\n",
    "output"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "6aDgFfhFYIAS"
   },
   "source": [
    "Our reasoning model is much better - it's not always correct, since we only trained it for an hour or so - it'll be better if we extend the sequence length and train for longer!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "-NUEmHFSYNTp"
   },
   "source": [
    "<a name=\"Save\"></a>\n",
    "### Saving to float16 for VLLM\n",
    "\n",
    "We also support saving to `float16` directly. Select `merged_16bit` for float16 or `merged_4bit` for int4. We also allow `lora` adapters as a fallback. Use `push_to_hub_merged` to upload to your Hugging Face account! You can go to https://huggingface.co/settings/tokens for your personal tokens."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "NjXGTkp7YNtB"
   },
   "outputs": [],
   "source": [
    "# Merge to 16bit\n",
    "if False: model.save_pretrained_merged(\"model\", tokenizer, save_method = \"merged_16bit\",)\n",
    "if False: model.push_to_hub_merged(\"hf/model\", tokenizer, save_method = \"merged_16bit\", token = \"\")\n",
    "\n",
    "# Merge to 4bit\n",
    "if False: model.save_pretrained_merged(\"model\", tokenizer, save_method = \"merged_4bit\",)\n",
    "if False: model.push_to_hub_merged(\"hf/model\", tokenizer, save_method = \"merged_4bit\", token = \"\")\n",
    "\n",
    "# Just LoRA adapters\n",
    "if False:\n",
    "    model.save_pretrained(\"model\")\n",
    "    tokenizer.save_pretrained(\"model\")\n",
    "if False:\n",
    "    model.push_to_hub(\"hf/model\", token = \"\")\n",
    "    tokenizer.push_to_hub(\"hf/model\", token = \"\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "52WMb3k_YPt8"
   },
   "source": [
    "### GGUF / llama.cpp Conversion\n",
    "To save to `GGUF` / `llama.cpp`, we support it natively now! We clone `llama.cpp` and we default save it to `q8_0`. We allow all methods like `q4_k_m`. Use `save_pretrained_gguf` for local saving and `push_to_hub_gguf` for uploading to HF.\n",
    "\n",
    "Some supported quant methods (full list on our [Wiki page](https://github.com/unslothai/unsloth/wiki#gguf-quantization-options)):\n",
    "* `q8_0` - Fast conversion. High resource use, but generally acceptable.\n",
    "* `q4_k_m` - Recommended. Uses Q6_K for half of the attention.wv and feed_forward.w2 tensors, else Q4_K.\n",
    "* `q5_k_m` - Recommended. Uses Q6_K for half of the attention.wv and feed_forward.w2 tensors, else Q5_K.\n",
    "\n",
    "[**NEW**] To finetune and auto export to Ollama, try our [Ollama notebook](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3_(8B)-Ollama.ipynb)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "QyEjW-WuYQIm"
   },
   "outputs": [],
   "source": [
    "# Save to 8bit Q8_0\n",
    "if False: model.save_pretrained_gguf(\"model\", tokenizer,)\n",
    "# Remember to go to https://huggingface.co/settings/tokens for a token!\n",
    "# And change hf to your username!\n",
    "if False: model.push_to_hub_gguf(\"hf/model\", tokenizer, token = \"\")\n",
    "\n",
    "# Save to 16bit GGUF\n",
    "if False: model.save_pretrained_gguf(\"model\", tokenizer, quantization_method = \"f16\")\n",
    "if False: model.push_to_hub_gguf(\"hf/model\", tokenizer, quantization_method = \"f16\", token = \"\")\n",
    "\n",
    "# Save to q4_k_m GGUF\n",
    "if False: model.save_pretrained_gguf(\"model\", tokenizer, quantization_method = \"q4_k_m\")\n",
    "if False: model.push_to_hub_gguf(\"hf/model\", tokenizer, quantization_method = \"q4_k_m\", token = \"\")\n",
    "\n",
    "# Save to multiple GGUF options - much faster if you want multiple!\n",
    "if False:\n",
    "    model.push_to_hub_gguf(\n",
    "        \"hf/model\", # Change hf to your username!\n",
    "        tokenizer,\n",
    "        quantization_method = [\"q4_k_m\", \"q8_0\", \"q5_k_m\",],\n",
    "        token = \"\",\n",
    "    )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, use the `model-unsloth.gguf` file or `model-unsloth-Q4_K_M.gguf` file in llama.cpp.\n",
    "\n",
    "And we're done! If you have any questions on Unsloth, we have a [Discord](https://discord.gg/unsloth) channel! If you find any bugs or want to keep updated with the latest LLM stuff, or need help, join projects etc, feel free to join our Discord!\n",
    "\n",
    "Some other links:\n",
    "1. Train your own reasoning model - Llama GRPO notebook [Free Colab](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3.1_(8B)-GRPO.ipynb)\n",
    "2. Saving finetunes to Ollama. [Free notebook](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3_(8B)-Ollama.ipynb)\n",
    "3. Llama 3.2 Vision finetuning - Radiography use case. [Free Colab](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3.2_(11B)-Vision.ipynb)\n",
    "6. See notebooks for DPO, ORPO, Continued pretraining, conversational finetuning and more on our [documentation](https://docs.unsloth.ai/get-started/unsloth-notebooks)!\n",
    "\n",
    "<div class=\"align-center\">\n",
    "  <a href=\"https://unsloth.ai\"><img src=\"https://github.com/unslothai/unsloth/raw/main/images/unsloth%20new%20logo.png\" width=\"115\"></a>\n",
    "  <a href=\"https://discord.gg/unsloth\"><img src=\"https://github.com/unslothai/unsloth/raw/main/images/Discord.png\" width=\"145\"></a>\n",
    "  <a href=\"https://docs.unsloth.ai/\"><img src=\"https://github.com/unslothai/unsloth/blob/main/images/documentation%20green%20button.png?raw=true\" width=\"125\"></a>\n",
    "\n",
    "  Join Discord if you need help + \u2b50\ufe0f <i>Star us on <a href=\"https://github.com/unslothai/unsloth\">Github</a> </i> \u2b50\ufe0f\n",
    "\n",
    "  This notebook and all Unsloth notebooks are licensed [LGPL-3.0](https://github.com/unslothai/notebooks?tab=LGPL-3.0-1-ov-file#readme).\n",
    "</div>\n"
   ]
  }
 ],
 "metadata": {
  "accelerator": "GPU",
  "colab": {
   "gpuType": "L4",
   "include_colab_link": true,
   "machine_shape": "hm",
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3",
   "name": "python3"
  },
  "language_info": {
   "name": "python"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "015e9a81bbd34c0b86e3e51ac92f9aef": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_ed2e8927760748838edb2838c64e89ee",
      "max": 2,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_dbf3c6f1585c4dd59600eeea64e11b98",
      "value": 2
     }
    },
    "032e9f8e346e4dcf91730922fea6d042": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_b7923fb3e4044a74a06d820350752fcb",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_116476e245f34842ab6819a630d03778",
      "value": "\u20071/1\u2007[00:00&lt;00:00,\u200716.67it/s,\u2007est.\u2007speed\u2007input:\u20071601.54\u2007toks/s,\u2007output:\u200716.85\u2007toks/s]"
     }
    },
    "04847addaf51446a98fc816f12a08e0a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_ba229e3ea26d46d68efac1b609f3539a",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_7dc1ebe4edfa4e7fbcbac8c78627af0a",
      "value": "README.md:\u2007"
     }
    },
    "0640df8084834e6cbbb253542b425713": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_9787cf9f286644ff8820e734144f9310",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_447ac050528a4d9db8091336b7821696",
      "value": "\u20071/1\u2007[00:00&lt;00:00,\u2007113.89it/s]"
     }
    },
    "06fdaa32d11b4defb14548bbfd6d949b": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "07e2cdfc39a34101a6a0cd1327e0cd9a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_6b742b1a6bd14efda6e25793897aa011",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_3447aa9ea02347d6a8723dc38c87788b",
      "value": "\u20071/1\u2007[00:00&lt;00:00,\u2007103.37it/s]"
     }
    },
    "0836e2d428a64789b990ed49dc18db0c": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "0a3cebbc92cd4bf4a3f1e80e5477da51": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "0bc6566651924fbfbfd8a5d0fc8a9058": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_325e588bc1bb4b34b43f9d0687a7e883",
      "max": 1,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_761ccde35b3943fa941c3e94d8e660b3",
      "value": 1
     }
    },
    "0e4383e6ffa043e69372e0b29b09cb0f": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_04847addaf51446a98fc816f12a08e0a",
       "IPY_MODEL_0bc6566651924fbfbfd8a5d0fc8a9058",
       "IPY_MODEL_817a3da36e7a4f0dab366bba5fef53ad"
      ],
      "layout": "IPY_MODEL_7098119670da4ed2b550806e2b6fb072"
     }
    },
    "0e77c1d28f77453d96c25f4949cd7dfe": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_211b0af26dad41b290942ceb40bea14f",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_2730f80d1c8940abbedd3be2d2d85bce",
      "value": "Unsloth:\u2007Tokenizing\u2007[&quot;text&quot;]\u2007(num_proc=16):\u2007100%"
     }
    },
    "0ecb52dfc8d240fd9807086f69121746": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_b46c12bbafb44ce88ca5c27bde31051c",
       "IPY_MODEL_85d2e53c66f148c2ac4737c2d59314bb",
       "IPY_MODEL_3ae9aa010f3b4a93a03e662aa8fd1b58"
      ],
      "layout": "IPY_MODEL_51f1068264e349efaccb3bad0ea7c0e2"
     }
    },
    "10e1e42262074d2e998864f1a80e29cf": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "116476e245f34842ab6819a630d03778": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "120fe2f191e24f9b874aaa8be103b776": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_28bec2fbc6a343a58c2105f5a0cb5787",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_89a46001ff4d45329eab28d6c2cbfcad",
      "value": "\u20071/1\u2007[01:30&lt;00:00,\u200790.25s/it,\u2007est.\u2007speed\u2007input:\u20070.64\u2007toks/s,\u2007output:\u200722.05\u2007toks/s]"
     }
    },
    "1750e702b6704b3c8833fbb0531e5cba": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "18217ca4bfb04bbfbf89295a29acfdf6": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "191f1528584a49c0bca19438a78b281a": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "19b8a853b0f04343909eb0ba78c59abb": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "1bd69459e70541108d04c3e55d174498": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "1beb350a843f46bcb4b2549a08c25c83": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "1de00dff765544ff8c84efac59da32e5": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "1f62ba67ecbe4ba881fc00065388059b": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_886b2499a0a74b468ca17fc0fc815cca",
      "max": 1,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_c72b119f914542388f3355d8e6f15612",
      "value": 1
     }
    },
    "211b0af26dad41b290942ceb40bea14f": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "215025d08c874638bc986817043a30ed": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "248b29dfe3634b49ae00603eb7c378e2": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_48274f858b5347f9bf67752bef2bb4a7",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_d2c7235b97b042a2a4af1d6a1bdbc788",
      "value": "\u200714116/14116\u2007[00:05&lt;00:00,\u20072598.80\u2007examples/s]"
     }
    },
    "24d4909da1b64610815028bae5c5d0bf": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "24e66f615fb24b64b4731468f55b0cd5": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "2730f80d1c8940abbedd3be2d2d85bce": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "27ca7417e18c4c59bfff3d50d34cfaaa": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_06fdaa32d11b4defb14548bbfd6d949b",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_9cc7d2877fed4f9ebfdf7bcf206bd8e5",
      "value": "\u200714116/14116\u2007[00:02&lt;00:00,\u20075231.83\u2007examples/s]"
     }
    },
    "28726c10a16f46cea5b9d87ff44a0a22": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_4108cd7a930441899ad61c8ff4ef13a1",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_5842d458b43c49c1899ac88fba5ffded",
      "value": "Processed\u2007prompts:\u2007100%"
     }
    },
    "28bec2fbc6a343a58c2105f5a0cb5787": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "28c2570fd57843e0a966e6f07a89925d": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "29443ef92de645bbabe1a59cbc2fcff9": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": "inline-flex",
      "flex": null,
      "flex_flow": "row wrap",
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": "100%"
     }
    },
    "2d035cb7a8d148dba83805f703d93363": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "325e588bc1bb4b34b43f9d0687a7e883": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": "20px"
     }
    },
    "344191b9becb4e969478373578e340bd": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_e5942ac2602b4754847535ce70036ea1",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_bab991217e7e45f08c441104ef9be205",
      "value": ""
     }
    },
    "3447aa9ea02347d6a8723dc38c87788b": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "358ab4da5b8743419000f2d47af66e8a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_a8d9cf3a1af44e2bb75bf0fbab8ac94a",
       "IPY_MODEL_c9a327c4c91e4fc8938ea087ad8d81f8",
       "IPY_MODEL_c2e62aef170143048ee34f4f9064df36"
      ],
      "layout": "IPY_MODEL_41741af320f44c048653b0d9ad7559a3"
     }
    },
    "37300ec212064b15a18d114087463bf1": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "3a8f05b84e174a069f3bdedf401ba8e0": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "3ae9aa010f3b4a93a03e662aa8fd1b58": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_0836e2d428a64789b990ed49dc18db0c",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_bdc85971a8d448ff9c3ee8e3418ee12e",
      "value": "\u20075.23M/5.23M\u2007[00:01&lt;00:00,\u20074.06MB/s]"
     }
    },
    "3b501b597c2c4de9a4c0fb76148f49b6": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_28726c10a16f46cea5b9d87ff44a0a22",
       "IPY_MODEL_6d034aa6d2e1416ea79a232897d7bac6",
       "IPY_MODEL_032e9f8e346e4dcf91730922fea6d042"
      ],
      "layout": "IPY_MODEL_929910c392b44bca89d4c22c82dda455"
     }
    },
    "3bb8e8fc098e463a9c301b20b898cd58": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_5a4366868bb24a9c98b88cc8945dffcf",
      "max": 1,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_9953ef55859c48d8bd52782b0dd9a060",
      "value": 1
     }
    },
    "3bd938c157fa47c190238308f4ef200c": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "3c7c3468e306426da443501133a5ae86": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "3d9cd52b51774a69951f6e846c8e6d05": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "3dc376e829f647988aa554e4f38328f3": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "4038af15b878430e83e2a9dfce9c0a53": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "4108cd7a930441899ad61c8ff4ef13a1": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "41741af320f44c048653b0d9ad7559a3": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "423db717d84d43ab9b864c3a66f8e963": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_4e96eded6ba84c7b97e3293a9c656a50",
      "max": 2,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_af8f330d69834981be6ce2034830a588",
      "value": 2
     }
    },
    "43c18d6bbc974b44baa0fbfad23863c2": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_3d9cd52b51774a69951f6e846c8e6d05",
      "max": 14116,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_dadfe8500d8f428aa3e4956d4138a90e",
      "value": 14116
     }
    },
    "444d3385ceab40b69d8b62693287e09c": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_7381c7133987492cbae358f771a9f663",
       "IPY_MODEL_aa52c725508b41e1ab5425a9d056a712",
       "IPY_MODEL_d703ead319a64737a8156f433a7cbea1"
      ],
      "layout": "IPY_MODEL_a484088c3a4f4aabbaf9d1244b41ab02"
     }
    },
    "447ac050528a4d9db8091336b7821696": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "479994686bf8494680bbf6d47cc9454a": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "47bf2e898cb44ea199598331a9927732": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "48274f858b5347f9bf67752bef2bb4a7": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "4e55bfcec17e47eda76d7d6673f40e83": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "4e96eded6ba84c7b97e3293a9c656a50": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "51f1068264e349efaccb3bad0ea7c0e2": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "51f225c5967848efb9e984659e4fc224": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "53dd4d9ca6d348eab38fc37ee0d22b5b": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_cd689d9ee3494bd1acf0026235be7c84",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_24d4909da1b64610815028bae5c5d0bf",
      "value": "Processed\u2007prompts:\u2007100%"
     }
    },
    "5842d458b43c49c1899ac88fba5ffded": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "59e21058d73446c0bd04503af2f46c45": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_6adc0ec79e17407f984c9fa1d2d8e94d",
       "IPY_MODEL_3bb8e8fc098e463a9c301b20b898cd58",
       "IPY_MODEL_07e2cdfc39a34101a6a0cd1327e0cd9a"
      ],
      "layout": "IPY_MODEL_c1217248af6d4093899cb002b35b3a1c"
     }
    },
    "5a4366868bb24a9c98b88cc8945dffcf": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "6203a8bbc900431ca94fad00b1d5b918": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_880f2a31478b4b3e8a2e3de57fef86a5",
       "IPY_MODEL_1f62ba67ecbe4ba881fc00065388059b",
       "IPY_MODEL_757e0d30919c476f9e38dee5813dbd8e"
      ],
      "layout": "IPY_MODEL_479994686bf8494680bbf6d47cc9454a"
     }
    },
    "6245fc08888d4121853db773b736376e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_67b97a89ee974139ae3aae7a26ea6b73",
      "max": 1,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_c2578de4adbd4d1e926dd67b92fc9e7f",
      "value": 1
     }
    },
    "62644ca4466f4b49be214967370ccfec": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "6321887e55dc4164af7aba72d7f6cab3": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_dfd5be51305143288a31c5e9b8c31ef6",
      "max": 1,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_f0b00790c7fe4bc184a8144d9f8c7102",
      "value": 1
     }
    },
    "67b97a89ee974139ae3aae7a26ea6b73": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": "2",
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "69095aa4c9df41d180f5bd20cdf4e918": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "6adc0ec79e17407f984c9fa1d2d8e94d": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_eb522d609c87468489ab4dddeae0aec5",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_8fe5ded236594408bec5935e0c765187",
      "value": "Adding\u2007requests:\u2007100%"
     }
    },
    "6b537d4bd211410e9866035f4f66bde2": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "6b742b1a6bd14efda6e25793897aa011": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "6d034aa6d2e1416ea79a232897d7bac6": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_fe11aa6ba91a47a6bb2bf08b75c5d09d",
      "max": 1,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_3a8f05b84e174a069f3bdedf401ba8e0",
      "value": 1
     }
    },
    "7098119670da4ed2b550806e2b6fb072": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "7381c7133987492cbae358f771a9f663": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_1de00dff765544ff8c84efac59da32e5",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_3dc376e829f647988aa554e4f38328f3",
      "value": "Map:\u2007100%"
     }
    },
    "73eef3d9649d41e3bf1a97c78a0358c2": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_edc1f23bc9bb4c5687b9bf94ee536a78",
       "IPY_MODEL_015e9a81bbd34c0b86e3e51ac92f9aef",
       "IPY_MODEL_d6f7da3e586741f0afc0fadcc2082961"
      ],
      "layout": "IPY_MODEL_764f9a9831f74f7b8ed522c1f670a042"
     }
    },
    "757e0d30919c476f9e38dee5813dbd8e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_81de29c6a54b40b78766cd53b78476ed",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_b2f7343578594bfca273c3784f231717",
      "value": "\u20071/1\u2007[00:00&lt;00:00,\u2007111.36it/s]"
     }
    },
    "7602cd142f994e9a8fad3d5b01ec20e0": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "761ccde35b3943fa941c3e94d8e660b3": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "764f9a9831f74f7b8ed522c1f670a042": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "77bdbac579db43088ab0b956a7ef6647": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_a509ae72e1c54c87b5f6e2f1ac829d9f",
      "max": 1,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_d8c10bd8d7aa4401912f05e256834cb5",
      "value": 1
     }
    },
    "7c2d35b88bf6422db45cc458610f0e0b": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "7c9d7a3d74a041e79772ba8096dadc7c": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "7dc1ebe4edfa4e7fbcbac8c78627af0a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "7ec0e35a64bb413985af098f3b185649": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_4e55bfcec17e47eda76d7d6673f40e83",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_e5ea2683cdcb4971b94d2222b943f969",
      "value": "Map:\u2007100%"
     }
    },
    "80501b4ca1b94cabb9fac0f5b4c52dc0": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "817a3da36e7a4f0dab366bba5fef53ad": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_afc5e0fb73d04efab499f33a65aad4e0",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_832082b492b642e7bc76201e1a141cbc",
      "value": "\u20073.46k/?\u2007[00:00&lt;00:00,\u2007409kB/s]"
     }
    },
    "81b13ca5550d401e965b304e3745f1ff": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "81de29c6a54b40b78766cd53b78476ed": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "832082b492b642e7bc76201e1a141cbc": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "8488c271e1fc4d1aa7c11c617421f684": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_344191b9becb4e969478373578e340bd",
       "IPY_MODEL_423db717d84d43ab9b864c3a66f8e963",
       "IPY_MODEL_b81a1969d2014c4e8aba8aab24cf2dad"
      ],
      "layout": "IPY_MODEL_7c2d35b88bf6422db45cc458610f0e0b"
     }
    },
    "853ccf3a067f4b9d9aa101897d757bc9": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "85d2e53c66f148c2ac4737c2d59314bb": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_47bf2e898cb44ea199598331a9927732",
      "max": 5232060,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_1beb350a843f46bcb4b2549a08c25c83",
      "value": 5232060
     }
    },
    "874a0807f1cf436090204fb692fb4c97": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "880f2a31478b4b3e8a2e3de57fef86a5": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_900692da18a64fc086ecfd4fb9d85aee",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_69095aa4c9df41d180f5bd20cdf4e918",
      "value": "Adding\u2007requests:\u2007100%"
     }
    },
    "880fe5fe5fef4d148b59cb2a79086c44": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_b2db1bc25fc94f04bed536bdb2eeda6b",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_dd2621233e984977bfa13568f6ddae4b",
      "value": "Processed\u2007prompts:\u2007100%"
     }
    },
    "886b2499a0a74b468ca17fc0fc815cca": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "89a46001ff4d45329eab28d6c2cbfcad": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "89bed27d0a444564bff6428cf415b81e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_eeae3b8a44794016ae7c8503a560f368",
       "IPY_MODEL_980ace7afe8149769b4ee5a55e73a6fa",
       "IPY_MODEL_d7a600301c754c55961b2ba7f417d933"
      ],
      "layout": "IPY_MODEL_ab7c4885ec88403a90c63994738252b0"
     }
    },
    "8e28c8926a754147accc8b956a920642": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "8e5005527c6b4fb98bf3181f3dbc7062": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "8e864ca2c8214556a1d99c7fc92a4bbb": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_81b13ca5550d401e965b304e3745f1ff",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_853ccf3a067f4b9d9aa101897d757bc9",
      "value": "\u20071/1\u2007[00:21&lt;00:00,\u200721.08s/it,\u2007est.\u2007speed\u2007input:\u20070.47\u2007toks/s,\u2007output:\u200724.28\u2007toks/s]"
     }
    },
    "8fe5ded236594408bec5935e0c765187": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "900692da18a64fc086ecfd4fb9d85aee": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "9083770fc2724da8904decc7bce6f6c3": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "918b1566b532479ab6148691060f7e0b": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_3bd938c157fa47c190238308f4ef200c",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_b428860ed4ac4dc6aa3079407f274677",
      "value": "Adding\u2007requests:\u2007100%"
     }
    },
    "929910c392b44bca89d4c22c82dda455": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": "inline-flex",
      "flex": null,
      "flex_flow": "row wrap",
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": "100%"
     }
    },
    "9375f88038974c6f8f09cbe01a346f43": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "9425cd57d6f745d4ac98496f1bcfe0e3": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": "2",
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "945f5beb5e78431fa300053b84045494": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "94ab94e59a8f4198b1388900f7e1ff67": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_880fe5fe5fef4d148b59cb2a79086c44",
       "IPY_MODEL_77bdbac579db43088ab0b956a7ef6647",
       "IPY_MODEL_8e864ca2c8214556a1d99c7fc92a4bbb"
      ],
      "layout": "IPY_MODEL_29443ef92de645bbabe1a59cbc2fcff9"
     }
    },
    "9787cf9f286644ff8820e734144f9310": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "980ace7afe8149769b4ee5a55e73a6fa": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_9425cd57d6f745d4ac98496f1bcfe0e3",
      "max": 1,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_e01eafecda214c73b14cfe7fd684d2bf",
      "value": 1
     }
    },
    "9953ef55859c48d8bd52782b0dd9a060": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "9cb60ac233904684b51285ce2450e1b3": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_918b1566b532479ab6148691060f7e0b",
       "IPY_MODEL_a8add928efd44bf587afdf7589ec2022",
       "IPY_MODEL_0640df8084834e6cbbb253542b425713"
      ],
      "layout": "IPY_MODEL_19b8a853b0f04343909eb0ba78c59abb"
     }
    },
    "9cc7d2877fed4f9ebfdf7bcf206bd8e5": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "9e2315dfa4d9420ba8d072f285bfd6a7": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "a12936d0a05d43438307b21131eea6ea": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "a2dafed986224ac08cbe4fbf255021cf": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_215025d08c874638bc986817043a30ed",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_18217ca4bfb04bbfbf89295a29acfdf6",
      "value": "Map:\u2007100%"
     }
    },
    "a484088c3a4f4aabbaf9d1244b41ab02": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "a509ae72e1c54c87b5f6e2f1ac829d9f": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": "2",
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "a5f0142460144a119814b5bcfa125398": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "a67476271ecd453fb2db65a6566b73a1": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "a77b813865c6419eaba1f2e0a4327a33": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_9e2315dfa4d9420ba8d072f285bfd6a7",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_28c2570fd57843e0a966e6f07a89925d",
      "value": "\u200759/59\u2007[00:04&lt;00:00,\u200725.14\u2007examples/s]"
     }
    },
    "a8add928efd44bf587afdf7589ec2022": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_0a3cebbc92cd4bf4a3f1e80e5477da51",
      "max": 1,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_a12936d0a05d43438307b21131eea6ea",
      "value": 1
     }
    },
    "a8d9cf3a1af44e2bb75bf0fbab8ac94a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_9375f88038974c6f8f09cbe01a346f43",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_b5010371a382465696c372a9b7f71a75",
      "value": "Generating\u2007train\u2007split:\u2007100%"
     }
    },
    "aa52c725508b41e1ab5425a9d056a712": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_2d035cb7a8d148dba83805f703d93363",
      "max": 14116,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_f8cd35fc12264b74b914fb3d68512f4c",
      "value": 14116
     }
    },
    "ab7c4885ec88403a90c63994738252b0": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": "inline-flex",
      "flex": null,
      "flex_flow": "row wrap",
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": "100%"
     }
    },
    "af8f330d69834981be6ce2034830a588": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "afc5e0fb73d04efab499f33a65aad4e0": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "b1b1d167f54c4fb6b0f73e7be3187b8c": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_4038af15b878430e83e2a9dfce9c0a53",
      "max": 14116,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_874a0807f1cf436090204fb692fb4c97",
      "value": 14116
     }
    },
    "b2db1bc25fc94f04bed536bdb2eeda6b": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "b2f7343578594bfca273c3784f231717": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "b428860ed4ac4dc6aa3079407f274677": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "b46c12bbafb44ce88ca5c27bde31051c": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_10e1e42262074d2e998864f1a80e29cf",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_d705df97d8ca44ceaa733d4a019e0c53",
      "value": "en/train-00000-of-00001.parquet:\u2007100%"
     }
    },
    "b5010371a382465696c372a9b7f71a75": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "b7923fb3e4044a74a06d820350752fcb": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "b81a1969d2014c4e8aba8aab24cf2dad": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_62644ca4466f4b49be214967370ccfec",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_51f225c5967848efb9e984659e4fc224",
      "value": "Loading\u2007safetensors\u2007checkpoint\u2007shards:\u2007100%\u2007Completed\u2007|\u20072/2\u2007[00:02&lt;00:00,\u2007\u20071.39s/it]\n"
     }
    },
    "b9f450ed827c42268f545b33661f2cc9": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "ba229e3ea26d46d68efac1b609f3539a": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "bab991217e7e45f08c441104ef9be205": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "bd04e7cb11bd49849c34fb539a842a72": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_f5f675fa5d3d43af958f088010366221",
       "IPY_MODEL_6321887e55dc4164af7aba72d7f6cab3",
       "IPY_MODEL_d4744efb69fc43ed94fa2d87a75786f1"
      ],
      "layout": "IPY_MODEL_c18fcefc94834fc2a821ed59398ffe9a"
     }
    },
    "bdc85971a8d448ff9c3ee8e3418ee12e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "c1217248af6d4093899cb002b35b3a1c": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "c18fcefc94834fc2a821ed59398ffe9a": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "c2578de4adbd4d1e926dd67b92fc9e7f": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "c2e62aef170143048ee34f4f9064df36": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_3c7c3468e306426da443501133a5ae86",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_6b537d4bd211410e9866035f4f66bde2",
      "value": "\u200714116/14116\u2007[00:00&lt;00:00,\u2007245953.02\u2007examples/s]"
     }
    },
    "c4fdf92f9b1a47949eaae1faf37143f7": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_0e77c1d28f77453d96c25f4949cd7dfe",
       "IPY_MODEL_f82e959c7e464c16a4d2fa3da7166ef2",
       "IPY_MODEL_a77b813865c6419eaba1f2e0a4327a33"
      ],
      "layout": "IPY_MODEL_7602cd142f994e9a8fad3d5b01ec20e0"
     }
    },
    "c5410db028b74a1595a237d6d6658c17": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "c569983e7c54402ab1b49bc301013ea7": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "c72b119f914542388f3355d8e6f15612": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "c84197b1b55a455985029d6800d2b777": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "c9a327c4c91e4fc8938ea087ad8d81f8": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_8e5005527c6b4fb98bf3181f3dbc7062",
      "max": 14116,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_a67476271ecd453fb2db65a6566b73a1",
      "value": 14116
     }
    },
    "ca02f5a45e1d4bf8b57dc8cf4a691244": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "ca08a301ba38499688cf62c223c3b680": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_7ec0e35a64bb413985af098f3b185649",
       "IPY_MODEL_b1b1d167f54c4fb6b0f73e7be3187b8c",
       "IPY_MODEL_27ca7417e18c4c59bfff3d50d34cfaaa"
      ],
      "layout": "IPY_MODEL_80501b4ca1b94cabb9fac0f5b4c52dc0"
     }
    },
    "cd689d9ee3494bd1acf0026235be7c84": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "d2c7235b97b042a2a4af1d6a1bdbc788": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "d4744efb69fc43ed94fa2d87a75786f1": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_eca16a8fe2a14f62bd6dd332da13cb9a",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_1bd69459e70541108d04c3e55d174498",
      "value": "\u20071/1\u2007[00:00&lt;00:00,\u2007107.55it/s]"
     }
    },
    "d6f7da3e586741f0afc0fadcc2082961": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_c84197b1b55a455985029d6800d2b777",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_b9f450ed827c42268f545b33661f2cc9",
      "value": "\u20072/2\u2007[00:00&lt;00:00,\u200713.10it/s]"
     }
    },
    "d703ead319a64737a8156f433a7cbea1": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_c569983e7c54402ab1b49bc301013ea7",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_945f5beb5e78431fa300053b84045494",
      "value": "\u200714116/14116\u2007[00:01&lt;00:00,\u200710879.77\u2007examples/s]"
     }
    },
    "d705df97d8ca44ceaa733d4a019e0c53": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "d7a600301c754c55961b2ba7f417d933": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_de5481bf18ed43ef99d667e8079bdce4",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_1750e702b6704b3c8833fbb0531e5cba",
      "value": "\u20071/1\u2007[00:41&lt;00:00,\u200741.86s/it,\u2007est.\u2007speed\u2007input:\u20070.24\u2007toks/s,\u2007output:\u200724.46\u2007toks/s]"
     }
    },
    "d8c10bd8d7aa4401912f05e256834cb5": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "dadfe8500d8f428aa3e4956d4138a90e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "dbf3c6f1585c4dd59600eeea64e11b98": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "dd2621233e984977bfa13568f6ddae4b": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "de5481bf18ed43ef99d667e8079bdce4": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "dfd5be51305143288a31c5e9b8c31ef6": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "e01eafecda214c73b14cfe7fd684d2bf": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "e5942ac2602b4754847535ce70036ea1": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "e5b11e5b2f9747d6855edf61a0ee1f07": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": "inline-flex",
      "flex": null,
      "flex_flow": "row wrap",
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": "100%"
     }
    },
    "e5ea2683cdcb4971b94d2222b943f969": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "eb522d609c87468489ab4dddeae0aec5": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "eca16a8fe2a14f62bd6dd332da13cb9a": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "ed2e8927760748838edb2838c64e89ee": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "edc1f23bc9bb4c5687b9bf94ee536a78": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_a5f0142460144a119814b5bcfa125398",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_8e28c8926a754147accc8b956a920642",
      "value": "Loading\u2007checkpoint\u2007shards:\u2007100%"
     }
    },
    "eeae3b8a44794016ae7c8503a560f368": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_191f1528584a49c0bca19438a78b281a",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_24e66f615fb24b64b4731468f55b0cd5",
      "value": "Processed\u2007prompts:\u2007100%"
     }
    },
    "f0b00790c7fe4bc184a8144d9f8c7102": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "f5f675fa5d3d43af958f088010366221": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_c5410db028b74a1595a237d6d6658c17",
      "placeholder": "\u200b",
      "style": "IPY_MODEL_ca02f5a45e1d4bf8b57dc8cf4a691244",
      "value": "Adding\u2007requests:\u2007100%"
     }
    },
    "f82e959c7e464c16a4d2fa3da7166ef2": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_7c9d7a3d74a041e79772ba8096dadc7c",
      "max": 59,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_37300ec212064b15a18d114087463bf1",
      "value": 59
     }
    },
    "f8cd35fc12264b74b914fb3d68512f4c": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "fb62611d6475416ba95176e844ea87d7": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_53dd4d9ca6d348eab38fc37ee0d22b5b",
       "IPY_MODEL_6245fc08888d4121853db773b736376e",
       "IPY_MODEL_120fe2f191e24f9b874aaa8be103b776"
      ],
      "layout": "IPY_MODEL_e5b11e5b2f9747d6855edf61a0ee1f07"
     }
    },
    "fe11aa6ba91a47a6bb2bf08b75c5d09d": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": "2",
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "fedf0624542a49fdaaa6128c12807b96": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_a2dafed986224ac08cbe4fbf255021cf",
       "IPY_MODEL_43c18d6bbc974b44baa0fbfad23863c2",
       "IPY_MODEL_248b29dfe3634b49ae00603eb7c378e2"
      ],
      "layout": "IPY_MODEL_9083770fc2724da8904decc7bce6f6c3"
     }
    },
    "state": {}
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}